【发布时间】:2021-09-03 05:38:43
【问题描述】:
我有 viewmodel 和 view,它在 ListView 中列出了我的 Model 对象,每个列表条目都包含 2 个按钮:详细信息和预订。
查看
<ListView
ItemsSource="{Binding Models}">
<ListView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Button Command="{Binding Delete}"></Button>
<Button Command="{Binding Details}"></Button>
</StackLayout>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
视图模型
class ModelsViewModel : MvxViewModel
{
private ObservableCollection<Model> models;
public ObservableCollection<Model> Models
{
get
{
return models;
}
set
{
SetProperty(ref models, value);
}
}
private IMvxCommand details;
public IMvxCommand Details
{
get
{
details = details ?? new MvxCommand<ListItem>(o =>
{
});
return details;
}
}
private IMvxCommand delete;
public IMvxCommand Delete
{
get
{
delete = delete ?? new MvxCommand<ListItem>(o =>
{
});
return delete;
}
}
}
每个按钮都应该在 ModelsViewModel 的 Details/Delete 方法中调用 lambda。
发生的情况是列表视图中的数据绑定指向不存在此类方法的模型对象。我的问题是,有没有办法改变列表视图中项目的绑定上下文,并将点击的项目作为参数传递?
我尝试弄乱 Source 并设置 BindingContext 没有成功
【问题讨论】:
标签: c# xamarin xamarin.forms mvvmcross