从按钮命令xamarin.forms MVVM获取ListView
在使用MVVM模式的xamarin.forms应用程序中,我的ListView有一个问题。我希望你能帮助我。 这是我的xaml:从按钮命令xamarin.forms MVVM获取ListView,listview,xamarin,mvvm,xamarin.forms,command,Listview,Xamarin,Mvvm,Xamarin.forms,Command,在使用MVVM模式的xamarin.forms应用程序中,我的ListView有一个问题。我希望你能帮助我。 这是我的xaml: <ListView x:Name="MissingVolumeListView" ItemsSource="{Binding Volumes}" SelectedItem ="{Binding Id}"
<ListView x:Name="MissingVolumeListView"
ItemsSource="{Binding Volumes}"
SelectedItem ="{Binding Id}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid x:Name="Item">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>
<Label Text="{Binding Name}" Style="{StaticResource UsualLabelTemplate}"/>
<Button Grid.Column="1" x:Name="DeleteButton" Text ="-" BindingContext="{Binding Source={x:Reference MissingVolumeListView}, Path=BindingContext}" Command="{Binding DeleteVolumeCommand}" CommandParameter="{Binding Source={x:Reference Item}, Path=BindingContext}"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如您所见,我想要的是在单击ListView中的按钮时获得选中的项。然后,我想让我的ListView获取所选项目的索引,以便将其从我的ListView中删除
感谢您的帮助首先更改您的删除按钮XAML
<Button Grid.Column="1"
Text ="-"
Command="{Binding Path=BindingContext.DeleteVolumeCommand, Source={x:Reference MissingVolumeListView}}"
CommandParameter="{Binding .}" />
如果卷不是ObservableCollection,请记住也调用notify属性changed。x:Name的用法不是MVVM模式,请尝试避开此问题。“删除”命令位于listitems的viewmodels上,对吗?使用viewmodels创建列表时,将列表作为对viewmodel的引用传递。然后可以在items viewmodel中轻松删除它。
<Button Grid.Column="1"
Text ="-"
Command="{Binding Path=BindingContext.DeleteVolumeCommand, Source={x:Reference MissingVolumeListView}}"
CommandParameter="{Binding .}" />
_deleteVolumeCommand = new Command((e) =>
{
var item = (e as Volume);
Volumes.Remove(item);
});