在Silverlight MVVM中的Combobox中更改选定项目时提升PropertyChanged

时间:2011-05-15 07:12:56

标签: silverlight mvvm

如果在组合框中选择的项目发生更改,如何更改组合框中的属性更改。实际上我想要的是当一个组合框中选择的值被改变时 基于所选值,将填写其他combox。 我已经实现了INotifyProperty接口,即使这样,当你选择一个不同的值时,设置的属性块也没有被执行。

让我用不同的例子详细说明: - 有两个组合框和一个文本块,两个组合框都包含城市名称,因此当用户在第二个组合框中选择城市时,应调用一个方法,该方法将给出文本块中两个城市之间的距离,我这样做使用MVVM。 问题是我无法调用第二个组合框的设置块(从那里我将调用给出距离的方法)。

1 个答案:

答案 0 :(得分:1)

如果您正在使用MVVM,则需要将SelectedItem绑定到后面的代码或ViewModel中的属性,确保绑定是双向的,并且属性实现INotifyPropertyChanged:

<ComboBox Name="ComboBox1" ItemsSource="{Binding Items}" 
          SelectedItem="{Binding Path=SelectedItem,Mode=TwoWay}" 
          DisplayMemberPath="TextProp" >

public Collection<ItemClass> Items
{
     get
     {
          return _items;
     }
     private set
     {
           if (value != _items)
           {
                _items = value;
                RaisePropertyChanged("Items");
           }
     }
 }

 public ItemClass SelectedItem
 {
      get
      {
          return _selectedItem;
      }
      set
      {
           if (value != _selectedItem)
           {
                _selectedItem = value;
                RaisePropertyChanged("SelectedItem");
           }
      }
  }