无法使ListBox和UpdateTarget工作

时间:2009-09-10 20:42:49

标签: c# .net wpf data-binding listbox

以下是XAML文件的相关部分:

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是一个公共静态类,Dic是一个静态公共属性,一个字典。

在某个时刻,我将项目添加到词典中,并希望ListBox能够反映这些变化 这是我想要使用的代码,但它不起作用:

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

此代码可以使用:

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

我更喜欢使用UpdateTarget,但我无法使用它 我做错了什么?

1 个答案:

答案 0 :(得分:12)

项目的绑定处理方式与WPF中DependencyProperty的标准绑定(特别是ItemsControl s)的处理方式截然不同。

我认为您需要以下内容:

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

实际上,您要刷新的ICollectionView对象。这实际上是为您管理集合绑定的对象。有关详细信息,请参阅the MSDN page