2009-09-10 13 views
5

Qui ci sono le parti rilevanti del file XAML:Non si può ottenere ListBox e UpdateTarget di lavorare

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 è una classe public static e DIC è una proprietà pubblica statica, un dizionario.

A un certo punto aggiungo elementi al dizionario e vorrei che ListBox riflettesse le modifiche.
Questo è il codice ho pensato di usare, ma non funziona:

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

questo codice funziona invece:

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

io preferirei usare UpdateTarget, ma io non riesco a farlo lavorare.
Cosa sto sbagliando?

risposta

11

Il collegamento degli articoli viene gestito in modo diverso rispetto al binding standard di DependencyProperty s in WPF (in particolare, tramite ItemsControl s).

Penso che si desidera qualcosa di simile al seguente:

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

E 'infatti l'oggetto ICollectionView che si desidera aggiornare. Questo è effettivamente l'oggetto che gestisce la raccolta vincolante per te. Vedi the MSDN page per maggiori informazioni.

+0

Grazie, ha funzionato perfettamente. – RobSullivan

Problemi correlati