如何使用MVVM处理WPF listbox selectionchanged事件

时间:2012-09-06 09:58:37

标签: wpf mvvm

我正在尝试使用MVVM在WPF中执行listbox更改事件。请让我知道如何做这个选择改变事件。

3 个答案:

答案 0 :(得分:32)

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

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

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

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

        _selectedItem = value;

        NotifyOfPropertyChange("SelectedItem");

        // selection changed - do something special
    }
}

答案 1 :(得分:32)

您可以使用

执行此操作
  1. 在项目中添加对System.Windows.Interactivity的引用
  2. 在XAML中添加xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
  3. 然后

    <ListBox>
      <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
          <i:InvokeCommandAction Command="{Binding YourCommand}"
                                 CommandParameter="{Binding YourCommandParameter}" />
        </i:EventTrigger>
      </i:Interaction.Triggers>
    </ListBox>
    

答案 2 :(得分:0)

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

查看此答案 https://stackoverflow.com/a/18960028/5627499