【问题标题】:Xamarin Forms - include a parameter on the clicked event of a buttonXamarin Forms - 在按钮的单击事件中包含一个参数
【发布时间】:2018-06-23 22:03:12
【问题描述】:

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

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

【问题讨论】:

    标签: xaml xamarin.forms


    【解决方案1】:

    最好的方法是使用MVVM,将ContentPageBindingContext 设置为ViewModel,并将按钮绑定到CommandCommandParameter。因此,您可以将任何需要的内容作为 CommandParameter 发送,从而使您的 UI 和业务逻辑完全分离。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我也建议你选择MVVM。您可以在ViewModel 中设置PINNO。使用ViewModel 中的支持字段创建PINNOproperty:

        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; }
        

        ViewModelConstructor

        PinButtonCommand=new Command(Dosomething);
        

        最后是点击 PinButton 时执行的方法

        void Dosomething()
        {
            //Use the PINNO Property here
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-04
          • 2017-02-07
          • 1970-01-01
          • 2012-01-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多