WPF嵌套的ListBox控件不会更新它绑定的列表

时间:2014-06-27 14:14:35

标签: c# wpf listview binding listbox

我有以下两个类(名称已更改),用于使用嵌套的Listbox填充ListView

private class ObjectName //For the Listview
{
    public int ID { get; set; }
    public string Field1 { get; set; }
    public string Field2 { get; set; }
    public List<BabyObject> Field3 { get; set; }
}

private class BabyObject //For the nested Listbox
{
    public string Field1 { get; set; }
    public bool Field2 { get; set; }
}

我使用一些对象填充Observable Collection并将其设置为ListView的ItemsSource。

我的ListView正确显示每个ListViewItem中的对象,每个项目中的嵌套列表框正确显示每个BabyObject。

问题: 如果我使用UI编辑ID,Field1或Field2值,内存中的Observable Collection也会更新 - 当然它会更新,因为绑定。但是,如果我编辑任何BabyObject的值,则内存中的列表不会更改。

因此,当我更改ListView的Controltemplate(以便在标签而不是文本框中显示值)时,BabyObject值将更改回原始值。

我知道当代码更新列表时,人们经常无法更新界面,但不是这样吗?

我很乐意回答问题并包含更多代码,但XAML相当大。与此同时,我将制作一个单独的示例列表视图,看看我是否可以在较小的控件上测试它。

由于

2 个答案:

答案 0 :(得分:0)

您需要在设置属性时引发属性更改通知 - 这会告知绑定更新。

MSDN docs here

答案 1 :(得分:0)

我已经解决了这个问题,但是我不知道是什么导致了它。

我尝试将Baby Objects的绑定设置为各种模式,并将List更改为Observable Collection。

这不起作用,所以我手动撤消了更改(不设置模式和使用List) - 现在它工作正常。

如果我使用界面编辑BabyObject值,则也会对List进行更改。

我也很困惑 - 抱歉浪费你的时间!