2009-09-10 14 views
5

Oto odpowiednie części pliku XAML:Nie można uzyskać ListBox i UpdateTarget pracować

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

MojaKlasa jest publiczną klasy statyczne i DIC jest statyczną własnością publiczną, słownik.

W pewnym momencie dodajemy elementy do słownika i chcę, aby ListBox odzwierciedlał zmiany.
Jest to kod Myślałem o użyciu, ale to nie działa:

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

Ten kod zamiast działa:

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

wolałbym użyć UpdateTarget, ale nie mogę go dostać pracować.
Co robię źle?

Odpowiedz

11

Wiązanie elementów jest obsługiwane inaczej niż standardowe wiązanie z DependencyProperty s w WPF (konkretnie przez ItemsControl s).

Myślę, że chcesz coś jak następuje:

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

jest w rzeczywistości przedmiotem ICollectionView, że chcesz, aby odświeżyć. Jest to efektywnie obiekt, który zarządza kolekcją wiążącą dla ciebie. Aby uzyskać więcej informacji, patrz the MSDN page.

+0

Dzięki, działało idealnie. – RobSullivan

Powiązane problemy