数据绑定listviewdatatemplate删除命令和命令参数
本文关键字:命令 参数 删除 listviewdatatemplate 数据绑定 | 更新日期: 2023-09-27 17:49:26
我正在使用Xamarin。表单,我正在寻找一种方法来有一个自定义单元格的数据绑定ListView,在那些自定义单元格中,有一个删除按钮,绑定到我的ViewModel中的命令。
这是我的代码…
<ListView ItemsSource="{Binding SelectedServiceTypes}" IsVisible="{Binding ShowSelectedServiceTypes}" HeightRequest="110" RowHeight="30">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal" HeightRequest="30">
<Label Text="{Binding ServiceCode}" HeightRequest="30" />
<Label Text="-" HeightRequest="30" />
<Label Text="{Binding ServiceDescription}" HeightRequest="30" />
<Button
Text="Delete"
HeightRequest="30"
HorizontalOptions="End"
VerticalOptions="Start"
Command="{Binding DeleteServiceTypeCommand}"
CommandParameter="{Binding ID}" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ListView绑定到一个ObservableCollection。我希望删除按钮使用命令,并传递CommandParameter给我的视图模型。
private Command _deleteServiceTypeCommand;
public Command DeleteServiceTypeCommand
{
get
{
if (_deleteServiceTypeCommand == null)
_deleteServiceTypeCommand = new Command<string> ((serviceTypeID) => RemoveServiceType (serviceTypeID) );
return _deleteServiceTypeCommand;
}
}
我不确定这在Xamarin.Forms中是否可行。这几乎就像单元格需要有两个BindingContext,一个是集合中的元素(获取ID值),另一个是视图模型(使Command工作)。
任何想法?
因此,经过更多的研究,我能够找到nuget包Xamarin.Forms.Behaviors,它添加了类似于RelativeSource绑定的东西。
https://github.com/corradocavalli/Xamarin.Forms.Behaviors它的实现示例可以在这里找到。
http://codeworks.it/blog/?p = 216