有人能告诉我silverlight 3控件是否使用弱事件模式。所以,如果我写:
myView.Listbox1.ItemSource = MyView.ViewModel.SomeObservableCollection;
或
MyView.DataGrid1.ItemSource = MyView.ViewModel.SomeOtherObservableCollection;
这里的ViewModel是一个比视图本身长得多的单例,我是否会出现内存泄漏或者SilverLight 3中的ListBox和Datagrid控件已经处理好了吗?
此外,我在视图构造函数中明确添加处理程序的事件如何:
MyView的() { 的InitializeComponent(); MyView.ViewModel.OnPropertyChanged + = new PropertyChangedEventHandler(model_propertyChanged); }
这里有一种使用弱引用的简单方法吗?
谢谢, 和Manish
答案 0 :(得分:0)
ListBox和DataGrid将在必要时从NotifyCollectionChanged
分离处理程序,并通过小型介体对象使用弱引用。因此,尽管NotifyCollectionChanged实际触发,但内存泄漏尽可能非常小并且完全消除。
自己执行此操作的模式是使用Mediator模式并让Mediator对象保持对其中一方的弱引用。