WPF嵌套ListBox控件不会更新它所绑定的列表
本文关键字:绑定 列表 更新 嵌套 ListBox 控件 WPF | 更新日期: 2023-09-27 18:10:28
我有以下两个类(更改了名称),它们将用于用嵌套的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。
My ListView正确显示每个ListViewItem中的对象,并且每个项目中的嵌套列表框正确显示每个BabyObject。
问题:如果我使用UI编辑ID, Field1或Field2的值,内存中的Observable Collection也会更新——当然,它会更新,因为绑定。但是,如果我编辑任何BabyObject的值,内存中的List不会改变。
因此,当我改变ListView的Controltemplate时(这样值就会显示在标签中而不是文本框中),BabyObject的值就会变回原来的值。
我知道当列表在代码中更新时,人们经常在更新界面时遇到麻烦,但不是这样吗?
我很乐意回答问题并包含更多的代码,但是XAML相当大。与此同时,我将创建一个单独的listview示例,看看是否可以在较小的控件上进行测试。
谢谢
你需要在属性设置时引发一个属性更改通知——这告诉绑定更新。
MSDN docs here
我已经解决了这个问题,但是我不知道是什么原因造成的。
我尝试将婴儿对象的绑定设置为各种模式,并将列表更改为可观察对象集合。
这不起作用,所以我手动撤消更改(不设置模式和使用列表)-现在它工作得很好。
如果我使用接口编辑BabyObject值,那么List也会发生变化。
我也很困惑-抱歉浪费你的时间!