0

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

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

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

我有窗口,其中我将列表视图绑定到映射结构。

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

有什么解决方案吗?

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

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

4

2 回答 2

2

您可以绑定到ObservableCollection<T>.

于 2013-02-26T11:55:16.093 回答
2

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

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

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

于 2013-02-26T12:11:23.767 回答