2010-01-12 57 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實際觸發就完全消除。

自己做這件事的模式是使用調解器模式,並讓調解器對象持有對參與方之一的弱引用。