2012-01-26 5 views
0

私はコレクションにバインドされたListBoxを持っています。コレクションにアイテムを追加すると、ListBoxに変更はありません。コレクションにバインドされたListBoxは自動的に更新されません。どうして?

ただし、ウィンドウのサイズを少し変更すると、新しいアイテムが突然ListBoxに表示されます。バインディングが機能しているように見えますが、リフレッシュが欠落しています。

私はここで間違っていますか?

はXAML:

<ListBox Grid.Row="2" Grid.Column="1" Name="TestModules" ItemsSource="{Binding ModuleList}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding TE}"/> 
       <TextBlock Text="-"/> 
       <TextBlock Text="{Binding AF}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

コード:

private List<PruefModule> _moduleList = new List<PruefModule>(); 
    public ICollectionView ModuleList { get; private set; } 

    ModuleList = CollectionViewSource.GetDefaultView(_moduleList); 
    _moduleList.Add((PruefModule)ModulesGrid.SelectedItem); 

答えて

4

あなたは代わりにするICollectionViewのObservableCollectionを使用する必要があり、それは大丈夫動作するはずです。 MSDNから

は 項目が追加、削除、またはリスト全体が更新されたとき取得したときに通知を提供し、動的なデータの収集を表します。

+0

+1 - ありがとうございます。 – paul

0

Adrianのように、ObservableCollectionを使用する必要があります。

それにもかかわらず、アイテムを追加した後に[更新]を呼び出すことができます。

_moduleList.Add((PruefModule)ModulesGrid.SelectedItem); 
ModuleList.Refresh();