Xamarin表单 - 在按钮的单击事件中包含一个参数

时间:2018-01-15 09:33:50

标签: xaml xamarin.forms

在Xamarin Forms中为按钮的Clicked事件添加参数的最佳方法是什么? 对于下面的按钮,我想将按钮文本作为参数发送到代码隐藏

中的SetPinNo
<Button BackgroundColor="Teal" Grid.Row="0" Grid.Column="0" BorderColor="White" BorderRadius="1" TextColor="White" Text="1" Clicked="SetPinNo"/>

3 个答案:

答案 0 :(得分:4)

最好的方法是使用MVVM,将BindingContext的{​​{1}}设置为ContentPage并将按钮绑定到ViewModel和{{} 1}}。因此,您可以将所需的任何内容发送为Command,从而使您的UI和业务逻辑完全分离。

关于它的官方指南中有关于MVVM和数据绑定的very nice article

答案 1 :(得分:2)

如果您不想使用命令,则事件处理程序具有object sender参数。将其投射到一个按钮,您可以提取文本。

var button = (Button)sender;
var text = button.Text;

答案 2 :(得分:2)

我还建议您使用MVVM。您可以在PINNO中设置ViewModel。使用PINNO中的支持字段创建ViewModel属性为:

string pinNo="";
public string PINNO
{
    get { return pinNo; }
    set
    {
       pinNo=value;
       OnPropertyChanged();
    }
}

现在将按钮Text绑定到PINNO,将command绑定为

Text={Binding PINNO} Command={Binding PinButtonCommand}

在ViewModel中将Command定义为

public ICommand PinButtonCommand { get; private set; }

Constructor的{​​{1}}

ViewModel

最后在PinButton被点击时执行的方法

PinButtonCommand=new Command(Dosomething);