2011-03-31 156 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