我已经定义了一个模型如下:
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
方法中访问这些值。
有人可以帮我吗?我完全被卡住了。
答案 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
}