如何将变量传递给按钮单击事件?

我将一个变量从一个页面传递到另一个页面以获取弹出菜单。我希望能够将选定的顾问添加到收藏夹列表中。问题是,当我将变量传递到一页时,它只允许我将它用于该特定方法。我试图将其传递给按钮单击事件(OkayButtonClicked),以便将其保存到收藏夹列表中。我对此尝试了两种不同的攻击。


我尝试过:使用 xaml 代码 x:Name 属性中的 FindByName 声明按钮。 Button okaybutton = FindByName("OkayButton") as Button;


然后我尝试了两种不同的方式使用这个变量来传递字符串。


一种方法是:


okaybutton += (sender2, e2) => OkayButtonClicked(sender2, e2, selectedAdvisor);

第二种方法是:


okaybutton += delegate(object sender, EventArgs e) 

{

   OkayButtonClicked(sender, e, selectedAdvisor); 

};

(selectedAdvisor是从一页传递到我所在的当前页面的变量,这就是问题发生的地方)


我遇到的每一个错误都有一个。


第一个:“运算符 '+=' 不能应用于类型为“Button”和“lambda 表达式”的操作数


第二个:“运算符‘+=’不能应用于“按钮”和“匿名表达式”类型的操作数


(我试图将变量传递给的按钮单击事件)


private void OkayButtonClicked(object sender, EventArgs e) 

{


    PopupNavigation.Instance.PopAsync();


    DisplayAlert("Attention", "You have successfully added Adviser to said List", "Okay"); 

}


千巷猫影
浏览 106回答 2
2回答

青春有我

你的构造函数FavoriteButtonPopupView可能看起来像这样public FavoriteButtonPopupView(string selectedAdvisor){  ...}selectedAdvisor您传递的变量是本地范围的- 这意味着它仅在构造函数中可见,并且该页面上的其他方法无法访问它。您需要做的是创建一个类级别变量,该变量对该类的所有方法都可见。private string SelectedAdvisor;public FavoriteButtonPopupView(string selectedAdvisor){  // store the parameter in a class level variable so other methods can access it  SelectedAdvisor = selectedAdvisor;  ...}private void OkayButtonClicked(object sender, EventArgs e) {    // do something with SelectedAdvisor here    PopupNavigation.Instance.PopAsync();    DisplayAlert("Attention", "You have successfully added Adviser to said List", "Okay"); }注意 - 这是基本的 C#,与 Xamarin 没有任何具体关系

长风秋雁

您需要使用okayButton.Click + =事件而不是okayButton += 。你的代码应该是这样的OKButton.Click += delegate(object sender, EventArgs e) { ..... };在 C# 中,只能将+=与事件或委托一起使用。您不能将 += 运算符与按钮实例一起使用希望这可以帮助
打开App,查看更多内容
随时随地看视频慕课网APP