猿问

WPF绑定未更新,可能是由于值转换器或依赖项属性引起的

我已经将代码缩减为尽可能少的测试用例,但仍然很大。我希望它非常简单。

Foo具有Bar和Baz类型的ObservableCollection。Baz在Foo中保留对Bar对象的引用的ObservableCollection。

主窗口具有一个Foo中所有Baz对象的ListBox,这些对象通过转换器使其成为纯字符串。SelectedItem设置为窗口的DependencyProperty,以方便参考。在窗口的后面,列出了Foo中所有Bar对象的列表,可以通过此DependencyProperty(SelectedBaz)添加/删除。出于调试目的,添加了另一个ListBox,其中显示了SelectedBaz的Bar对象。

发生的情况是,SelectedBaz被更新,Foo持有的ObservableCollection中的Baz被更新,Foo的Baz集合的CollectionChanged事件被触发,但是带有转换器的ListBox从未更新。

我尝试在整个过程中撒一些'Mode = TwoWay',但没有任何运气(由于它们没有效果,因此删除了)。我已经尝试过使用SelectedValue与SelectedItem(从我的研究看来,SelectedItem是执行此操作的正确方法,因此我将其保留了下来)。我尝试在添加/删除按钮单击中手动触发Baz ListBox中的绑定目标的更新,但这没有任何效果。

然后,我感到沮丧并尝试破解它,并使用一个带有SelectedIndex,MultiBinding,MultiValueConverter等的整数,等等。我发现我也遇到了同样的问题。Baz ListBox绑定中的源已更新,但目标未更新。


精慕HU
浏览 290回答 1
1回答
随时随地看视频慕课网APP
我要回答