加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无法使ListBox和UpdateTarget正常工作

发布时间:2020-12-15 08:44:01 所属栏目:百科 来源:网络整理
导读:以下是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是
以下是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是一个静态公共属性,一个Dictionary.

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

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

相反,此代码有效:

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

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

解决方法

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

我想你想要的东西如下:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读