Как получить событие itemsourcebound? Listbox - PullRequest
5 голосов
/ 25 февраля 2011

Как я могу получить itemourcechangedevent в списке?

Например, источник данных изменяется с нуля на ListA, затем на ListB

Я знаю, что такого события нет. Но есть ли обходной путь для этого?

Заранее спасибо:)

Ответы [ 2 ]

7 голосов
/ 25 февраля 2011

Обычно используемый (отвечаемый) подход заключается в использовании PropertyChangedTrigger из Blend SDK.Однако я не люблю рекомендовать использование других SDK, если нет четкого указания на то, что SDK уже используется.

На данный момент я предполагаю, что он находится в коде, который вы хотите прослушивать дляСобытие ItemsSourceChanged.Техника, которую вы можете использовать, состоит в том, чтобы создать DependencyProperty в вашем UserControl и связать его с ItemsSource элемента управления, который вы хотите прослушать.

private static readonly DependencyProperty ItemsSourceWatcherProperty = 
    DependencyProperty.Register(
       "ItemsSourceWatcher",
       typeof(object),
       typeof(YourPageClass),
       new PropertyMetadata(null, OnItemsSourceWatcherPropertyChanged));

private static void OnItemsSourceWatcherPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    YourPageClass source = d As YourPageClass;
    if (source != null)
        source.OnItemsSourceWatcherPropertyChanged();  
}

private void OnItemsSourceWatcherPropertyChanged()
{
    // Your code here.
}

Теперь, когда ваш ListBox имеетимя "myListBox" вы можете настроить просмотр с: -

Binding b = new Binding("ItemsSource") { Source = myListBox };
SetBinding(ItemsSourceWatcherProperty, b);
1 голос
/ 25 февраля 2011

В Silverlight нет события ItemsSourceChanged.

Но есть обходной путь.Используйте RegisterForNotification() метод, упомянутый в этой статье , чтобы зарегистрировать обратный вызов изменения значения свойства для *1009* ItemsSource property.

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