шаблон слабых событий Silverlight 3 - PullRequest
1 голос
/ 12 января 2010

Может кто-нибудь сказать мне, если элементы управления silverlight 3 используют шаблон слабых событий. Итак, если я напишу:

myView.Listbox1.ItemSource = MyView.ViewModel.SomeObservableCollection;

или

MyView.DataGrid1.ItemSource = MyView.ViewModel.SomeOtherObservableCollection;

А вот ViewModel - это синглтон, который живет намного дольше, чем само представление, получу ли я утечки памяти или элементы управления ListBox и Datagrid в silverLight 3 уже позаботятся об этом?

Также, как насчет событий, к которым я явно добавляю обработчик в конструкторе представления, например:

MyView () { InitializeComponent (); MyView.ViewModel.OnPropertyChanged + = new PropertyChangedEventHandler (model_propertyChanged); }

Есть ли простой способ использовать слабую ссылку здесь?

Спасибо, Manish

1 Ответ

0 голосов
/ 12 января 2010

ListBox и DataGrid отсоединят обработчик от NotifyCollectionChanged при необходимости, а также используют слабые ссылки через небольшой объект-посредник. Следовательно, утечка памяти, когда это возможно, очень мала и полностью устраняется всякий раз, когда NotifyCollectionChanged фактически срабатывает.

Шаблон, позволяющий сделать это самостоятельно, - использовать шаблон «Посредник», чтобы объект «Посредник» имел слабую ссылку на одну из вовлеченных сторон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...