1

我到处寻找答案,但没有运气。我正在使用 MVVM Light,我的一个视图中有一个 ListView。当使用 MVVM Light 中内置的“事件到命令”单击我的 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>

我不完全确定 EventToCommand 应该在 ListView 中的哪个位置。另外,我知道这段代码是完全不正确的。

来自 GameViewModel.cs

public ICommand ShowAdvCommand { get; private set; }
ShowAdvCommand = new RelayCommand(() => ExecuteShowAdvCommand(), () => true);

private void ExecuteShowAdvCommand()
{
    System.Windows.MessageBox.Show("Firing");
}
4

1 回答 1

2

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

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

于 2013-06-04T06:35:32.917 回答