2011-01-13 56 views
4

工作,我有這樣的XAML:列表框的ItemsSource綁定通過代碼而不是通過XAML

<ListBox x:Name="MyItemsList"       
    ItemsSource="{Binding MyItems}" 
    SelectionChanged="ItemsList_SelectionChanged"> 

後面的代碼分配頁面視圖模型的DataContext:

DataContext = App.ViewModel; 

我的視圖模型對象定義MyItems(在設置DataContext之前初始化MyItems):

public ObservableCollection<Item> MyItems; 

最終結果是我的ListBox不顯示任何東西。我嘗試在綁定後添加項目,但他們也沒有出現。

什麼工作是,如果我設置的ItemsSource的代碼,而不是在XAML:

MyItemsList.ItemsSource = App.ViewModel.MyItems; 

爲什麼這會發生任何提示?謝謝。

回答

2

公衆的ObservableCollection MyItems; - 領域,但你應該使用財產!

物業與支持字段:

private ObservableCollection<Item> _myItems = new ObservableCollection<Item>(); 
public ObservableCollection<Item> MyItems{get{return _myItems;}} 

如果whant二傳手,你應該執行INotifyPropertyChanged並調用OnPropertyChanged( 「MyItems」)

+0

好一點;但它沒有解決我的問題。如果我在XAML中將一個隨機名稱作爲ItemsSource屬性,它也不會給我一個錯誤(不是在構建中,而是在運行時),這是否是預期的?現在MyItems是一個屬性{get;組; }和列表框仍然是空的。 – siger 2011-01-13 08:15:28