0

Win 8 (旧称) Metro アプリで、単純なツリー構造を ItemsControl の itemsSource にバインドしようとしています。私の構造は INotifyPropertyChanged インターフェイスを実装し、その子のいずれかが変更されたときにも通知します。

ツリーを ObservableCollection にフラット化するコンバーターを作成しようとしましたが、バインディングが作成された後、更新されません。

私が望むものを示すために、次のテスト プロジェクトを作成しました: https://skydrive.live.com/redir?resid=970FFC53F4B7A598!146

この単純なプロジェクトの問題は、下部のアプリ バーの [追加] ボタンを押すと、階層内に新しい子が作成されますが、ListView が更新されないことです。

私が見逃しているもの、またはどうすればこれを行うことができますか?

4

1 に答える 1

2

DataTemplateこれは、たとえば、を使用してかなり簡単にする必要があります

<DataTemplate DataType="{x:Type local:TreeItemType}">
    <StackPanel>
        <ContentPresenter Content="{Binding Name}"/>
        <ItemsControl ItemsSource="{Binding Children}"/>
    <StackPanel>
<DataTemplate>

を介して暗黙的に適用しますItemsControl.Resources(したがって、インナーにも適用さItemsControlれます。


葉だけが必要な場合、または単一のユニットではないアイテムに問題がある場合は、ビューのみが参照を持っているため変更されないCompositeCollectionを作成するコンバーターを除いて、通知ObservableCollectionを介して元のコレクションをラップできます。CollectionContainers保存されます。

于 2012-08-31T14:33:50.643 に答える