【发布时间】:2011-12-16 22:47:36
【问题描述】:
当用户在组合框中选择不同的值时,我想执行一些功能。
我正在使用 MVVM 模式。
知道在这种情况下我如何绑定数据吗?
【问题讨论】:
标签: c# wpf data-binding mvvm combobox
当用户在组合框中选择不同的值时,我想执行一些功能。
我正在使用 MVVM 模式。
知道在这种情况下我如何绑定数据吗?
【问题讨论】:
标签: c# wpf data-binding mvvm combobox
绑定到 SelectedItem 上的属性。 在属性的设置器中,执行您的函数。 SelectedItem="{Binding Path=SomeProperty}"
【讨论】:
您可能希望绑定到SelectedValue、SelectedItem 或SelectedIndex,具体取决于您要执行的操作:
public class MyViewModel : INotifyPropertyChanged
{
public ObservableCollection<MyObj> MyCollection { get; private set; }
private MyObj _theItem;
public MyObj TheItem
{
get { return _theItem; }
set
{
if (Equals(value, _theItem)) return;
_theItem= value;
//Or however else you implement this...
OnPropertyChanged("TheItem");
//Do something here.... OR
//This will trigger a PropertyChangedEvent if you're subscribed internally.
}
}
private string _theValue;
public string TheValue
{
get { return _theValue; }
set
{
if (Equals(value, _theValue)) return;
_theValue= value;
OnPropertyChanged("TheValue");
}
}
private int _theIndex;
public int TheIndex
{
get { return _theIndex; }
set
{
if (Equals(value, _theIndex)) return;
_theIndex = value;
OnPropertyChanged("TheIndex");
}
}
}
public class MyObj
{
public string PropA { get; set; }
}
<!-- Realistically, you'd only want to bind to one of those -->
<!-- Most likely the SelectedItem for the best usage -->
<ItemsControl ItemsSource="{Binding Path=MyCollection}"
SelectedItem="{Binding Path=TheItem}"
SelectedValue="{Binding Path=TheValue}"
SelectedIndex="{Binding Path=TheIndex}"
/>
【讨论】: