我有我的窗體上的列表框,看起來像這樣:WPF綁定不刷新
<ListBox Name="lbResults" SelectionChanged="lbResults_SelectionChanged"/>
我綁定以下收集到它:
ObservableCollection<Hand> oHands = new ObservableCollection<Hand>();
使用下面的代碼:
lbResults.DataContext = oHands;
Binding binding = new Binding();
lbResults.SetBinding(ListBox.ItemsSourceProperty, binding);
oHands集合通過後臺工作人員填充,每當新的Hand對象是ava時通過事件通知ilable。當添加東西時,ListBox完美刷新。顯示Hand對象的ToString()結果,這就是我想要的 - 迄今爲止非常好。但是,當後臺工作完成時
void finder_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
oHands = new ObservableCollection<Hand>(oHands.OrderBy(o => o.PotSize));
lbResults.SetBinding(ListBox.ItemsSourceProperty, new Binding());
}
列表中的項目仍以原始順序顯示。我可以確認這個清單是重新排列的,但是這些項目仍然以原始順序顯示。我如何刷新這個綁定?
我更新我的工人完成方法看起來像: 空隙finder_RunWorkerCompleted(對象發件人,RunWorkerCompletedEventArgs E) \t \t { \t \t \t oHands =新的ObservableCollection(oHands.OrderBy(O => 0。 PotSize)); \t \t \t BindingExpression exp = BindingOperations.GetBindingExpression(lbResults,ListBox.ItemsSourceProperty); \t \t \t exp。UpdateTarget(); \t \t} 但它仍然沒有在新命令:( –
2010-10-20 17:44:35
我在另一種方法編輯你可以把顯示出來。 – Aphex 2010-10-20 18:11:00