2010-01-12 58 views
1

有人可以告诉我silverlight 3控件是否使用弱事件模式。所以,如果我写:弱事件模式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); }

在这里有一个简单的方法使用弱引用?

感谢, 马尼什

回答

0

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

自己做这件事的模式是使用调解器模式,并让调解器对象持有对参与方之一的弱引用。