我有我的窗体上的列表框,看起来像这样: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