在Xamarin Forms中的CommandParameter中传递两个参数

时间:2018-01-18 16:04:40

标签: c# xamarin xamarin.forms

我已经定义了一个模型如下:

public class UserDetails
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public List<Transport> TransportModel { get; set; }
}

基于上面的模型,我实例化了一个包含用于测试目的的硬编码值的列表。

此外,我根据XAML页面上的TransportModel值动态填充按钮,如下所示:

        StackLayout stack = new StackLayout();

        foreach (var t in user.TransportModel)
        {
// Here I am looping to access data in the TransportModel
            Button btn = new Button();
            btn.Text = t.Name;
            btn.SetBinding(Button.CommandProperty, new Binding("ShowCommandParameter"));
            btn.CommandParameter = user.TransportModel; // if this correct ?
            stack.Children.Add(btn);
        }

我有以下ViewModel:

 public TransportViewModel()
        {
            ShowCommandParameter = new Command<UserDetails>(Show);
        }

        public void Show(UserDetails param)
        {
        // I want to access properties of TransportModel here..
        }

我遇到的问题是我想在CommandParameter中传递两个参数。我想在Show方法中访问这些值。

有人可以帮我吗?我完全被卡住了。

1 个答案:

答案 0 :(得分:1)

由于每个按钮仅适用于特定的Transport,因此您希望将Transport对象作为CommandParameter

传递
foreach (var t in user.TransportModel)
{
  ...
  btn.CommandParameter = t;
  ...
}

然后

    public TransportViewModel()
    {
        ShowCommandParameter = new Command<Transport>(Show);
    }

    public void Show(Transport param)
    {
        // param contains the selected Transport
    }