【发布时间】:2011-02-01 08:56:57
【问题描述】:
我有一个 wpf 组合框。它的 ItemsSource 绑定到 ObservebaleCollection。显示的值(通过 DisplayMemberPath)是 Entity 类的 Name 属性。 问题是当我更新当前选定的实体名称并触发 NotifyPropertyChnage 时,它不会在 UI 中更新(即使当我打开组合列表时它也会在那里更新)。 我想问题是实体哈希码仍然相同,并且组合没有看到差异。我该怎么办?
xaml:
<ComboBox ItemsSource="{Binding Entities, Mode=OneWay}"
SelectedItem="{Binding CurrentEntity}"
DisplayMemberPath="Name"/>
代码:
public event PropertyChangedEventHandler PropertyChanged;
ObservableCollection<Entity> m_entities = new ObservableCollection<Entity>();
public ObservableCollection<Entity> Entities{get{return m_entities;}}
public Entity CurrentEntity{get;set}
public void RenameEntity(string name)
{
m_currentEntity.Name = name;
PropertyChanged(this, new PropertyChangedEventArgs("CurrentEntity"));
PropertyChanged(this, new PropertyChangedEventArgs("Entities"));
}
【问题讨论】:
-
首先你可以发布一些代码:)
-
我也遇到了同样的问题。在项目名称(由 DisplayMemberPath 指向)更改后,我通过在后面的代码中清除和重新分配 DisplayMemberPath 来强制它刷新。我知道这是一个愚蠢的解决方案,但它是我认为最简单的解决方案。