MVVM Light -事件到命令&ListView - SelectedItem

本文关键字:ListView 命令 SelectedItem Light 事件 MVVM | 更新日期: 2023-09-27 18:16:52

我到处寻找这个问题的答案,但没有运气。我正在使用MVVM Light,我在我的一个视图中有一个ListView。我想找到一种方法来触发命令,当我的ListView中选定的项目被点击使用"事件命令"内置到MVVM光。在这一点上,我不知道如何去做这件事。如果您能给我任何帮助,我将不胜感激。

From my 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");
}

MVVM Light -事件到命令&ListView - SelectedItem

在XAML中,您正在订阅Clicked事件。更改SelectionChanged事件以确保存在SelectedItem。

单击ListView并不总是选择一个项目。