我一直在寻找答案,没有运气。我正在使用MVVM Light,我的一个视图中有一个ListView。我希望找到一种方法来使用MVVM Light中内置的'Event to Command'单击ListView中的选定项来触发命令。在这一点上,我不知道如何去做这件事。任何你能给我的帮助都将不胜感激。
来自我的GameView.xaml
<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>
我不完全确定在ListView中EventToCommand应该去哪里。另外,我知道这段代码完全不正确。
来自GameViewModel.cs
public ICommand ShowAdvCommand { get; private set; }
ShowAdvCommand = new RelayCommand(() => ExecuteShowAdvCommand(), () => true);
private void ExecuteShowAdvCommand()
{
System.Windows.MessageBox.Show("Firing");
}
答案 0 :(得分:2)
在XAML中,您正在订阅Clicked
事件。更改为SelectionChanged
事件以确保存在SelectedItem。
点击ListView并不总是选择一个项目。