Mic*_*ael 16 c# data-binding wpf
目前我在WPF应用程序中使用ObservableCollection,该应用程序是Conway生命游戏的一个实现,适用于大约500个单元格,但之后它开始显着减速.我最初使用HashSet编写应用程序但无法找到将单元格绑定到画布的任何方法.
有没有办法让我的HashSet通知其绑定对象的更改?我的Cell类是一个简单的整数X,Y对,如果该对存在,则该单元处于活着状态,否则死亡.Cell实现了INotifyPropertyChanged并覆盖了GetHashCode和Equals.我无法让细胞显示任何变化,只是加载后立即出现的细胞.有没有办法将Hashset绑定到Canvas上的项目?
Mat*_*ton 15
我不知道这是否会有所帮助,但这是我为个人项目制作的"可观察集" 的一个非常简单的实现.它基本上防止插入(或覆盖)已经在集合中的项目.
如果你想,你可以简单地退出方法而不是抛出异常.
public class SetCollection<T> : ObservableCollection<T>
{
protected override void InsertItem(int index, T item)
{
if (Contains(item)) throw new ItemExistsException(item);
base.InsertItem(index, item);
}
protected override void SetItem(int index, T item)
{
int i = IndexOf(item);
if (i >= 0 && i != index) throw new ItemExistsException(item);
base.SetItem(index, item);
}
}
Run Code Online (Sandbox Code Playgroud)
Geo*_*Cox 11
我在这里发布了一个完整的ObservableHashSet,您可以使用它.
https://github.com/BellaCode/Public/tree/master/ObservableHashSet
它基于如何实现ObservableCollection并提供相同的线程安全重入检查.