2011-03-31 158 views
1

为了控制一个List<CustomObject>的序列绑定到字段对象的,我放在类,例如:在应用程序设置

public class SerializableCustomObjectList : IXmlSerializable 
{ 
    public List<CustomObject> CustomObjectList = new List<CustomObject>(); 
    ... 
} 

public class CustomObject {...} 

,它的实例被存储在应用程序设置该列表。我没有序列化/反序列化的问题。但是,当我尝试将公共属性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的实例。

当前的行为是列表框Items.Count保持为零(在调试器中),即使填充了SavedCustomObjects.CustomObjectList也是如此。

回答

4

有几件事情,我可以看到:

  1. 你应该一个ItemsControl(如列表框)绑定到一个ObservableCollection,而不是一个列表。
  2. 你只能绑定到属性,而不是字段(即使用get/set)。
  3. DataContext应该实现INotifyPropertyChanged类,并且setter(来自第2点)应该引发PropertyChanged事件。
+0

谢谢,这让它工作。 – merv 2011-03-31 23:56:52

+0

作为参考,我发现这个例子可以完整地说明提供这个答案的三个建议中的每一个:http://wblum.org/listbind/net3/index.html – merv 2011-04-01 01:17:40