gpt4 book ai didi

c# - WPF 中的绑定(bind)数据未更新

转载 作者:行者123 更新时间:2023-11-30 22:19:04 25 4
gpt4 key购买 nike

我有一个显示一些列表框的应用程序。这些 ListBox 绑定(bind)到数据。其中一个列表是门列表,而另一个列表是用户列表。

门列表来自与数据库通信的 DataManager 类。用户列表来自另一个进行一些计算的类。

我已将两个 ListBox 绑定(bind)到它们适当的 ObservableList getter setter。

对于门:

public ObservableList<Door> Doors
{
get { return DataManager.Doors; }
}

对于用户:

public ObservableList<User> Users
{
get { return classLogic._users; }
}

问题来了。当我添加或删除门时,UI 上的列表会更新。当我添加或删除用户时,列表不会更新。我必须重新加载 View (重新启动应用程序)才能更新它。我错过了什么?为什么它不起作用?

最佳答案

可观察集合为每个项目的属性引发 PropertyChanged
就像你有一个 IsDoorClosed 属性它会更新

删除元素会在 Doors 上引发 CollectionChanged 事件,但 UI 不会更新,因为未在 Bound Property Doors 上引发 PropertyChanged 事件。

您需要在 Doors 的每个 CollectionChanged 上引发一个 PropertyChanged 事件。

大致如下:这是 psado 代码,它是作为示例写在这里的为了您的利益,请检查是否有任何语法错误。

 Doors.CollectionChanged += OnDoorsCollectionChanged; 


private static void OnDoorsCollectionChanged(object sender , CollectionChangedEventArgs e)
{
PropertyChanged(sender,new PropertyChangedEventArgs("Doors"));
}

关于c# - WPF 中的绑定(bind)数据未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15760706/

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