c# - 绑定(bind)到应用程序设置中对象的字段

标签 c# xaml binding

为了控制一个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人口稠密。

最佳答案

我可以看到一些东西:

  1. 您应该将 ItemsControl(例如 ListBox)绑定(bind)到 ObservableCollection,而不是 List。
  2. 您只能绑定(bind)到属性,不能绑定(bind)字段(即使用 get/set)。
  3. 作为 DataContext 的类应该实现 INotifyPropertyChanged,并且 setter (从第 2 点开始)应该引发 PropertyChanged 事件。

关于c# - 绑定(bind)到应用程序设置中对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507324/

相关文章:

c# - 如何在 Winforms TextBox 中每次按键后获取当前文本?

c# - 这个修剪代码会失败吗?

c# - 一种根据另一种风格激活的风格?

c# - 在 xaml 中绑定(bind)矩形宽度和高度

c# - 从控件获取绑定(bind)对象

c# - 从 C++ 创建 COM 对象?

c# - 如何在 Action 中传递字符串参数?

wpf - 内部控件和 View 模型之间的 UserControl 属性 "relay";感觉/工作不正常

c# - 单击文本框后删除文本

c# - 如何在 wpf 中使用 DateTimePicker 绑定(bind)