2009-09-10 10 views
5

Estas son las partes relevantes del archivo XAML:no puede obtener ListBox y UpdateTarget para trabajar

xmlns:local="clr-namespace:BindingTest" 
<ListBox x:Name="myList" 
     ItemsSource="{Binding Source={x:Static local:MyClass.Dic}, 
           Path=Keys, 
           Mode=OneWay, 
           UpdateSourceTrigger=Explicit}"> 
</ListBox> 

MyClass es una clase estática pública y DIC es una propiedad pública estática, un diccionario.

En cierto punto agrego elementos al diccionario y me gustaría que el ListBox refleje los cambios.
Este es el código Pensé en usar pero no funciona:

BindingExpression binding; 
binding = myList.GetBindingExpression(ListBox.ItemsSourceProperty); 
binding.UpdateTarget(); 

este código en lugar de obras:

myList.ItemsSource = null; 
myList.ItemsSource = MyClass.dic.Keys; 

yo preferiría usar UpdateTarget, pero no puedo conseguirlo trabajar.
¿Qué estoy haciendo mal?

Respuesta

11

El encuadernado de artículos se maneja de forma bastante diferente a la encuadernación estándar de DependencyProperty s en WPF (específicamente, por ItemsControl s).

Creo que quieres algo como lo siguiente:

var itemsView = CollectionViewSource.GetDefaultView(myListBox.ItemsSource); 
itemsView.Refresh() 

De hecho, es el objeto ICollectionView que desea actualizar. Este es efectivamente el objeto que administra el enlace de la colección para usted. Ver the MSDN page para más información.

+0

Gracias, funcionó a la perfección. – RobSullivan

Cuestiones relacionadas