如何扩展ComboBox以支持命令(MVVM)?

时间:2010-05-26 14:05:05

标签: vb.net silverlight mvvm combobox command

正如主题所说,我需要扩展标准Silverlight ComboBox的功能,以支持命令。由于我遵循MVVM,我需要我的ComboBox将SelectionChanged事件传递给我的ViewModel。

这样做的代码是什么样的?我希望能够将Command属性放在我的ComboBox XAML控件上。

使用(WCF RIA,MVVM,VB.NET)..

所有提示都是适当的!

2 个答案:

答案 0 :(得分:6)

您可以将Combobox的属性SelectedIndex或SelectedItem绑定到ViewModel。所以你不需要任何命令。

示例(绑定到SelectedIndex):

XAML

<ComboBox SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}"/>

C#

public class ComboBoxViewModel
{
   private int _selectedIndex;
   public int SelectedIndex {
     get { return _selectedIndex; }
     set { 
       if (value != _selectedIndex) {
         _selectedIndex = value;
         // Perform any logic, when the SelectedIndex changes (aka. PropertyChanged-Notification)
       }
     } 
   }
}

示例(绑定到SelectedItem):

XAML

<ComboBox SelectedItem="{Binding SelectedItem, Mode=TwoWay}"/>

C#

public class ComboBoxViewModel
{
   private MyViewModel _selectedItem;
   public MyViewModel SelectedItem {
     get { return _selectedItem; }
     set { 
       if (value != _selectedItem) {
         _selectedItem= value;
         // Perform any logic, when the SelectedIndex changes ((aka. PropertyChanged-Notification)
       }
     } 
   }
}

答案 1 :(得分:1)

创建公开ICommand Commandobject CommandParameter的行为。在行为中连接到AssociatedObject的SelectionChanged事件。然后,您可以将命令绑定到您的行为并模拟SelectionChanged事件的命令。