gpt4 book ai didi

c# - 动态更改数组中的 MVVM INotifyPropertyChanged

转载 作者:行者123 更新时间:2023-12-03 10:55:31 24 4
gpt4 key购买 nike

在我的爱好项目中,我有以下情况:

我正在使用 C#、WPF、MVVM(以及 MVVM:尝试)

我加载包含信息的二进制文件并将其存储在(无符号)字节列表中。我有一个引用列表中特定位置的类层次结构。我的应用程序有时会更改类层次结构(和引用字节),但有时也会直接更改字节(例如复制范围)。

我有窗口,其中我将 ListView 绑定(bind)到映射结构。

在更改类中的属性时,我使用 INotifyPropertyChanged,因为它应该在 MVVM 中使用。但是,直接更改字节时我遇到了问题。目前我正在使用手动更新方法,但它变得非常困惑。

有什么解决方案吗?

字节列表也可以是 45 MB 的数据。如果我在列表上设置通知,是否意味着对于每个字节更改我都会收到所有观察者的通知?意思是什么时候我会复制例如10KB 的字节一个接一个,我想要 100 万次更新中的 100 个观察函数(处理属性更改)?那将是一个性能杀手。

或者我也可以这样说:现在更新类 X(即类内的所有属性更改)。我不能使用 set 属性函数,因为在复制字节时值已经被更改。

最佳答案

如果您将字节存储在列表中( List<byte> ),那么您可以简单地将列表的类型更改为 ObservableCollection<byte> 并且您的代码几乎无需更改即可运行。然后,您可以摆脱手动更新。

但是,如果您将数据保存在字节数组( byte[] )中,最好的选择是将其更改为 ObservableCollection<byte> ,但您可能必须使用该集合更改某些代码。

如果您有特殊情况要处理,另一种选择可能是创建自己的数据结构,实现 INotifyPropertyChanged INotifyCollectionChanged .但这需要编写很多代码。

关于c# - 动态更改数组中的 MVVM INotifyPropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088444/

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