C# MVVM指示灯-事件到命令&;ListView-SelectedItem
我已经找遍了所有的答案,但运气不好。我使用的是MVVM Light,其中一个视图中有一个ListView。我想找到一种方法,在使用MVVM灯中内置的“事件到命令”单击我的ListView中的选定项时触发命令。在这一点上,我不知道如何去做这件事。如果你能给我任何帮助,我将不胜感激 从my GameView.xamlC# MVVM指示灯-事件到命令&;ListView-SelectedItem,c#,mvvm,mvvm-light,eventtocommand,C#,Mvvm,Mvvm Light,Eventtocommand,我已经找遍了所有的答案,但运气不好。我使用的是MVVM Light,其中一个视图中有一个ListView。我想找到一种方法,在使用MVVM灯中内置的“事件到命令”单击我的ListView中的选定项时触发命令。在这一点上,我不知道如何去做这件事。如果你能给我任何帮助,我将不胜感激 从my GameView.xaml <ListView ItemsSource="{Binding Adventurers}" Name="AdvListView"
<ListView ItemsSource="{Binding Adventurers}"
Name="AdvListView"
ScrollViewer.CanContentScroll="False"
Background="Gray"
BorderBrush="Transparent"
Grid.Column="1"
Grid.ColumnSpan="3"
Grid.Row="2">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cmd:EventToCommand Command="{Binding ShowAdvCommand}"
CommandParameter="{Binding SelectedItem,
ElementName=AdvListView}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListView.View>
<GridView>
<GridViewColumn Width="Auto" Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Width="Auto" Header="Level" DisplayMemberBinding="{Binding Level}"/>
</GridView>
</ListView.View>
</ListView>
在XAML中,您正在订阅单击的
事件。更改至SelectionChanged
事件,以确保存在SelectedItem
单击列表视图并不总是选择项目。尝试订阅SelectionChanged而不是Clicked事件可能会起作用。请解释命令代码的错误所在。@ernodeweard有效。如果你想提出这个答案,我很乐意接受。最后一件事,我如何在代码中访问所选项目(具体是关联的viewmodel)?该命令将是viewmodel的一部分,因此此
将引用viewmodel。如果您对SelectedItem感兴趣,可以将其作为参数传递,但也可以向ViewModel添加依赖项属性,并将其绑定到ListView的SelectedItem属性。如果这样做,您可以通过访问dependency属性来访问所选项目。现在一切似乎都正常了。再次感谢你的帮助。很好!没问题,这就是我们来这里的目的:)
public ICommand ShowAdvCommand { get; private set; }
ShowAdvCommand = new RelayCommand(() => ExecuteShowAdvCommand(), () => true);
private void ExecuteShowAdvCommand()
{
System.Windows.MessageBox.Show("Firing");
}