为了控制一个List<CustomObject>
的序列化,我将该列表放在一个类中,例如:
public class SerializableCustomObjectList : IXmlSerializable
{
public List<CustomObject> CustomObjectList = new List<CustomObject>();
...
}
public class CustomObject {...}
,其实例存储在应用程序设置中。我对序列化/反序列化没有问题。但是,当我尝试绑定(bind)公共(public)属性时,CustomObjectList
, 到 ListBox, 没有任何反应。
这是我的代码:
<ListBox Name="CustomObjectListBox">
<ListBox.ItemsSource>
<Binding Source="{x:Static p:Settings.Default}"
Path="SavedCustomObjects.CustomObjectList"/>
</ListBox.ItemsSource>
...
</ListBox>
哪里SavedCustomObjects
是 Properties.Settings.Default 中 SerializableCustomObjectList 的实例。
当前行为是 ListBox Items.Count
保持为零(在调试器中),即使 SavedCustomObjects.CustomObjectList
人口稠密。
最佳答案
我可以看到一些东西:
- 您应该将 ItemsControl(例如 ListBox)绑定(bind)到 ObservableCollection,而不是 List。
- 您只能绑定(bind)到属性,不能绑定(bind)字段(即使用 get/set)。
- 作为 DataContext 的类应该实现 INotifyPropertyChanged,并且 setter (从第 2 点开始)应该引发 PropertyChanged 事件。
关于c# - 绑定(bind)到应用程序设置中对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507324/