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

Mca*_*001 2 vb.net silverlight combobox command mvvm

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

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

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

所有提示都是适当的!

Jeh*_*hof 6

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

示例(绑定到SelectedIndex):

XAML

<ComboBox SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)

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)
       }
     } 
   }
}
Run Code Online (Sandbox Code Playgroud)

示例(绑定到SelectedItem):

XAML

<ComboBox SelectedItem="{Binding SelectedItem, Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)

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)
       }
     } 
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您还需要访问当前正在选择的对象,则可以使用SelectedItem属性执行完全相同的操作.如果由于某种原因你决定要命令像Focus这样的其他事件,我会查看http://www.galasoft.ch/mvvm/getstarted/#tutorials,查看EventToCommand行为部分. (2认同)