【问题标题】:MVVM Light - Event to Command & ListView - SelectedItemMVVM Light - 事件到命令和 ListView - SelectedItem
【发布时间】:2013-06-04 05:40:59
【问题描述】:

我到处寻找答案,但没有运气。我正在使用 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");
}

【问题讨论】:

  • 试试this
  • 也许订阅 SelectionChanged 而不是 Clicked 事件会起作用。请解释一下命令代码应该有什么问题。
  • @ErnodeWeerd 这行得通。如果您想提出这个作为答案,我很乐意接受。

标签: c# mvvm mvvm-light eventtocommand


【解决方案1】:

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

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

【讨论】:

  • 最后一件事,我如何访问代码中的选定项目(具体的关联视图模型)?
  • Command 将成为 ViewModel 的一部分,因此 this 将引用 ViewModel。如果您对 SelectedItem 感兴趣,可以将其作为参数传递,但您也可以将依赖属性添加到 ViewModel 并将其绑定到 ListView 的 SelectedItem 属性。如果这样做,您可以通过访问依赖属性来访问所选项目。
  • 现在似乎一切正常。再次感谢您的帮助。
  • 好!没问题,这就是我们来这里的目的:)
猜你喜欢
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2014-09-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
相关资源
最近更新 更多