组合框数据绑定到选定值事件

时间:2011-12-16 22:47:36

标签: c# wpf data-binding mvvm combobox

当用户在组合框中选择不同的值时,我想执行某些功能。

我正在使用MVVM模式。

在这种情况下我的数据绑定有什么想法吗?

2 个答案:

答案 0 :(得分:2)

绑定到SelectedItem上的属性。 在属性的setter中,执行你的功能。     SelectedItem =“{Binding Path = SomeProperty}”

答案 1 :(得分:1)

您想要绑定到SelectedValueSelectedItemSelectedIndex,具体取决于您要执行的操作:

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}"
               />
相关问题