弱事件模式Silverlight 3

时间:2010-01-12 10:02:20

标签: silverlight

有人能告诉我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

1 个答案:

答案 0 :(得分:0)

ListBox和DataGrid将在必要时从NotifyCollectionChanged分离处理程序,并通过小型介体对象使用弱引用。因此,尽管NotifyCollectionChanged实际触发,但内存泄漏尽可能非常小并且完全消除。

自己执行此操作的模式是使用Mediator模式并让Mediator对象保持对其中一方的弱引用。