WPF ComboBox下拉列表(数据绑定)值不变

时间:2010-04-09 08:00:43

标签: wpf data-binding combobox

我将ItemsSource的{​​{1}}绑定到ComboBox。在代码中,我更改了集合(例如,编辑ObservableCollection<MyClass>属性)。

问题:如果MyClass.Name,更改不会反映在下拉框中,但是当我从下拉列表中选择项目时,它会在ComboBox的所选项目框中正确显示。< / p>

发生了什么事? :)

PS MyClass已实施INotifyPropertyChanged

2 个答案:

答案 0 :(得分:1)

我怀疑INotify ......没有正确实现?我刚刚测试过:

     l = new ObservableCollection<MyClass>();
     l.Add(new MyClass() { Name = "A" });
     l.Add(new MyClass() { Name = "B" });
     l.Add(new MyClass() { Name = "C" });
     cmb.ItemsSource = l;

然后,点击按钮:

     l[0].Name = "Robert";

工作得很好。我的组合框:

    <ComboBox x:Name="cmb" SelectedValuePath="Name" DisplayMemberPath="Name" />

最后,我的班级:

 class MyClass : INotifyPropertyChanged
 {
    private string _name;
    public string Name
    {
       get
       {
          return _name;

       }
       set
       {
          string oldval = _name;
          _name = value;
          if (!string.Equals(oldval, _name))
          {
             OnPropertyChanged("Name");
          }
       }
    }
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string name)
    {
       var ev = PropertyChanged;
       if (ev != null)
       {
          ev.Invoke(this, new PropertyChangedEventArgs(name));
       }
    }  
 }

答案 1 :(得分:0)

对不起,这甚至是一个问题。问题是我忘了在DataTemplate中设置绑定路径,并且它使用ToString方法来显示元素。这搞砸了绑定。

请记住 - 如果您覆盖ToString,请始终检查您是否在绑定中使用它:)

相关问题