gpt4 book ai didi

c# - 无法让 ListBox 和 UpdateTarget 工作

转载 作者:太空狗 更新时间:2023-10-29 21:07:31 33 4
gpt4 key购买 nike

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

在某个时候,我将项目添加到字典中,并希望列表框反射(reflect)更改。
这是我考虑使用的代码,但它不起作用:

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

这段代码反而有效:

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

我更愿意使用 UpdateTarget,但我无法让它工作。
我做错了什么?

最佳答案

项目绑定(bind)的处理方式与 WPF 中 DependencyProperty 的标准绑定(bind)(具体而言,由 ItemsControl 处理)完全不同。

我想你想要像下面这样的东西:

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

它实际上是您要刷新的 ICollectionView 对象。这实际上是为您管理集合绑定(bind)的对象。参见 the MSDN page了解更多信息。

关于c# - 无法让 ListBox 和 UpdateTarget 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1407609/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com