16

我正在尝试使用 MVVM 在 WPF 中执行列表框更改事件。请让我知道如何执行此 selectionchanged 事件。

4

3 回答 3

35

您可以使用

  1. System.Windows.Interactivity在您的项目中添加对的引用
  2. 在 XAML 中添加xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

然后

<ListBox>
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
      <i:InvokeCommandAction Command="{Binding YourCommand}"
                             CommandParameter="{Binding YourCommandParameter}" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
</ListBox>
于 2012-09-06T10:03:37.623 回答
34

SelectedItem您可以将列表框的属性绑定到 ViewModel 上的属性:

<ListBox SelectedItem="{Binding SelectedItem}" ...>
    ....
</ListBox>

在该属性中,始终会有 ListBox 中的选定项。如果您真的需要在选择更改时执行某些操作,您可以在该属性的设置器中执行此操作:

public YourItem SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if(value == _selectedItem)
            return;

        _selectedItem = value;

        NotifyOfPropertyChange("SelectedItem");

        // selection changed - do something special
    }
}
于 2012-09-06T10:00:54.293 回答
0

您可以将 ListBox SelectionChanged 事件绑定到 ViewModel 中的命令。

看到这个答案 https://stackoverflow.com/a/18960028/5627499

于 2019-10-04T08:54:28.263 回答