正如主题所说,我需要扩展标准Silverlight ComboBox的功能,以支持命令。由于我遵循MVVM,我需要我的ComboBox将SelectionChanged事件传递给我的ViewModel。
这样做的代码是什么样的?我希望能够将Command属性放在我的ComboBox XAML控件上。
使用(WCF RIA,MVVM,VB.NET)..
所有提示都是适当的!
答案 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 Command
和object CommandParameter
的行为。在行为中连接到AssociatedObject的SelectionChanged事件。然后,您可以将命令绑定到您的行为并模拟SelectionChanged事件的命令。