gpt4 book ai didi

.net - 更新组合框中显示的字段 DisplayMemberPath 未显示

转载 作者:行者123 更新时间:2023-12-05 00:39:07 25 4
gpt4 key购买 nike

我有一个 wpf 组合框。它的 ItemsSource 绑定(bind)到 ObservebaleCollection。显示的值(通过 DisplayMemberPath)是 Entity 类的 Name 属性。
问题是当我更新当前选定的实体名称并触发 NotifyPropertyChnage 时,它​​不会在 UI 中更新(即使当我打开组合列表时它也会在那里更新)。
我想问题是实体哈希码仍然相同,并且组合没有看到差异。我能做些什么?

xml:

<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"));
}

最佳答案

显然,问题在于组合框在数据对象上调用 ToString 以显示所选项目,并对下拉菜单中的项目使用 DisplayMemberPath。

要解决此问题,请使用 DataTemplate 而不是 DisplayMemberPath:

<DataTemplate x:Key="EntityTemplate"
DataType="{x:Type my:Entity}">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>

并将其分配给组合框的 ItemTemplate 属性:
<ComboBox ItemsSource="{Binding Entities}"
ItemTemplate="{StaticResource EntityTemplate}"
SelectedItem="{Binding ...}"/>

关于.net - 更新组合框中显示的字段 DisplayMemberPath 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4860584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com