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

如何使用MVVM处理WPF listbox selectionchanged事件,wpf,mvvm,Wpf,Mvvm,我正在尝试使用MVVM在WPF中执行listbox更改事件。请告诉我如何执行此selectionchanged事件。您需要将列表框的SelectedItem属性绑定到ViewModel上的属性: <ListBox SelectedItem="{Binding SelectedItem}" ...> .... </ListBox> 你可以使用 在项目中添加对System.Windows.Interactivity的引用 在XAML中添加xmlns:i=”http:

我正在尝试使用MVVM在WPF中执行listbox更改事件。请告诉我如何执行此selectionchanged事件。

您需要将列表框的
SelectedItem
属性绑定到ViewModel上的属性:

<ListBox SelectedItem="{Binding SelectedItem}" ...>
    ....
</ListBox>
你可以使用

  • 在项目中添加对
    System.Windows.Interactivity
    的引用
  • 在XAML中添加
    xmlns:i=”http://schemas.microsoft.com/expression/2010/interactivity“
  • 然后


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

    看到这个答案了吗

    嗨,Ummar,谢谢你的回答,但我发现这个错误,在交互中找不到可附加属性触发器。请让我知道解决方案。您是否在XAML designer中获得此信息?而且您的项目必须编译和执行良好。您正在使用哪个版本的Visual Studio?是的,我正在使用XAML。我在windows 7 64位OST上使用VS 2010这是因为您在XAML中使用混合行为,这对VS designer不太友好,我更喜欢使用Expression Blend来设计GUI。这篇文章可能对您有所帮助,我尝试了以下方法:xmlns:Local=“clr namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity”。为此,在XAML设计中的InvokeCommandAction类型错误中找不到属性命令。别忘了指定双向绑定作为模式。@ScottNimrod:这应该是默认值。即使加载了Viewmodel,属性设置程序也会触发其他事件,不是吗?绑定项目时,selecteditem也将被设置。。。通常,我只希望在用户更改值而不是代码时执行操作。。。。。
    public YourItem SelectedItem
    {
        get { return _selectedItem; }
        set
        {
            if(value == _selectedItem)
                return;
    
            _selectedItem = value;
    
            NotifyOfPropertyChange("SelectedItem");
    
            // selection changed - do something special
        }
    }
    
    <ListBox>
      <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
          <i:InvokeCommandAction Command="{Binding YourCommand}"
                                 CommandParameter="{Binding YourCommandParameter}" />
        </i:EventTrigger>
      </i:Interaction.Triggers>
    </ListBox>