我有一个可以向其中添加设备项的CollectionView。如果用户添加了太多项,我希望能够删除它们。
当按下红色按钮时,如何将ItemsSource中项目的索引传递给RemoveEquipmentCommand?
<CollectionView ItemsSource="{Binding NewLogEntry.EquipmentDetails}"
SelectionMode="None">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="model:EquipmentDetails">
<Frame Margin="0,0,0,10">
<VerticalStackLayout>
<Grid ColumnDefinitions="*,Auto">
<Picker Title="Pick Component Type"
ItemsSource="{Binding Source={RelativeSource AncestorType={x:Type viewModel:AddLogEntryViewModel}}, Path=ComponentTypes}"
SelectedItem="{Binding ComponentType}"
Style="{StaticResource MediumLabel}"
HorizontalOptions="Center"
Grid.Column="0" />
<Button Text="x"
BackgroundColor="Red"
Grid.Column="1"
Command="{Binding RemoveEquipmentCommand}" />
</Grid>
我知道有一个手势识别器,使它成为一个滑动左删除功能,但他们不支持在Windows应用程序平台.我仍然需要这个桌面应用程序上的删除按钮.
1条答案
按热度按时间h6my8fg21#
我们一般不会得到数据的索引,因为如果我们改变数据,索引的值总是会改变。
我们可以通过将选定项传递给
CommandParameter
来获取该项。我创建了一个demo来实现这个功能,可以参考下面的代码:
xaml:
我的视图模型.cs