2011-02-25 8 views
5

¿Cómo puedo obtener el itemchangedevent en el cuadro de lista?¿Cómo obtengo el evento itemsourcechanged? Listbox

Por ej. el ítem fuente cambia de nulo a ListA y luego a ListB

Sé que no hay tal evento. Pero, ¿hay alguna solución para esto?

Gracias de antemano :)

+0

¿En qué condiciones está la fuente de datos del cuadro de lista cambiando? ¿Puedes publicar algún código? –

Respuesta

7

Un enfoque comúnmente usado (respondido) es usar el PropertyChangedTrigger del SDK de Blend. Sin embargo, no me gusta recomendar el uso de otros SDK a menos que haya una indicación clara de que el SDK ya está en uso.

Supongo por el momento que está detrás del código que desea escuchar para un evento "ItemsSourceChanged". Una técnica que puede usar es crear un DependencyProperty en su UserControl y vincularlo a ItemsSource del control que desea escuchar.

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. 
} 

Ahora dado que su ListBox tiene un nombre "myListBox" puede configurar ver con: -

Binding b = new Binding("ItemsSource") { Source = myListBox }; 
SetBinding(ItemsSourceWatcherProperty, b); 
1

No hay ningún evento en ItemsSourceChangedSilverlight.

Pero, hay una solución. Utilice el método RegisterForNotification() mencionado en this article para registrar una devolución de llamada de cambio de valor de propiedad para la propiedad ListBoxItemsSource.

+1

No puedo comenzar a describir de cuántas maneras ese enfoque es simplemente incorrecto. Es el tipo de enfoque correcto (el uso de callback de propiedad de dependencia) pero la implementación es simplemente terrible. – AnthonyWJones

Cuestiones relacionadas