无法使ListBox和UpdateTarget工作

Rob*_*van 6 .net c# data-binding wpf 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>
Run Code Online (Sandbox Code Playgroud)

MyClass是一个公共静态类,Dic是一个静态公共属性,一个Dictionary.

在某一点上,我将项添加到Dictionary并希望ListBox反映更改.
这是我想要使用的代码,但它不起作用:

BindingExpression binding;
binding = myList.GetBindingExpression(ListBox.ItemsSourceProperty);
binding.UpdateTarget();
Run Code Online (Sandbox Code Playgroud)

相反,此代码有效:

myList.ItemsSource = null;
myList.ItemsSource = MyClass.dic.Keys;
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用UpdateTarget,但我不能让它工作.
我究竟做错了什么?

Nol*_*rin 12

项目的绑定处理方式与DependencyPropertyWPF 中s的标准绑定(特别是ItemsControls)的处理方式截然不同.

我想你想要的东西如下:

var itemsView = CollectionViewSource.GetDefaultView(myListBox.ItemsSource);
itemsView.Refresh()
Run Code Online (Sandbox Code Playgroud)

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