2011-01-13 6 views
4

を通じて、私は、このXAMLを持っていない:のListBoxのItemsSourceコードを通じて取り組んで結合が、XAML

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

の背後にあるコードは、ビューモデルにページのDataContextのを割り当てます。

DataContext = App.ViewModel; 

私のViewModelオブジェクトの定義をMyItems(そして私はDataContextを設定する前にMyItemsを初期化します):

public ObservableCollection<Item> MyItems; 

最終結果私のリストボックスは何も表示されないということです。バインディング後にアイテムを追加しようとしましたが、どちらも表示されません。これが起こる理由について

MyItemsList.ItemsSource = App.ViewModel.MyItems; 

任意のヒント:私はコードではなく、XAMLでのItemsSourceを設定した場合は何作品

?ありがとう。

答えて

2

公開ObservableCollection MyItems; - フィールドですが、プロパティを使用する必要があります!バッキングフィールドを持つ

プロパティ:

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

あなたは、あなたがOnPropertyChangedをする( "MyItems")whantセッターをINotifyPropertyChangedの実装をして呼び出す必要がある場合は

+0

良い点。それは私の問題を解決しませんでした。 XAMLのItemsSourceプロパティとしてランダムな名前を付けても、それは私にエラーを与えません(実行時ではなく、ビルド時ではない)。今すぐMyItemsは{get;セット; ListBoxはまだ空です。 – siger

+0

バッキングフィールドでプロパティを使用してみます。 (更新されたポスト) – SeeSharp

+0

私のコレクションを変更して、ゲッターがプライベートコレクションを返すようにしました。それはまだ動作しません、私はどこか他のコード内に問題があると思います。私はちょうどそれを把握するためにあまりにも多くの時間がかかるので、コードを介してバインディングを設定します。ご協力いただきありがとうございます。 – siger

関連する問題