1

状況 は次のとおりです。Data Contextウィンドウは次のとおりMainViewModelです。

から構築されていますObservableCollectionsSubViewModel. それぞれSubViewModelに独自ObservableCollectionの型がありますString.

今、私はツリービューを持っています。ItemsSource はObservableCollection. (コレクションMainViewModelであることを意味します) です。SubViewModel

アイテムが選択されている場合、ObservableCollection(タイプ文字列) が表示されるようにしたいselected Item in the treeview.

どうやってやるの?

いくつかのコード:

<TreeView ItemTemplate="{DynamicResource TreeViewDataTemplate}" ItemsSource="{Binding SubViewModelCollection}"/>

何らかの理由でコレクションをスタック パネルに表示したい。そう: (TypeCollection はアイテムの文字列 ObservableCollection です。もちろん、現在は機能していません)

 <ItemsControl ItemsSource="{Binding TypeCollection}" x:Name="UserList" ItemTemplate="{StaticResource TemplateDataTemplate}" >
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Column="1"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>

どうすれば目標を達成できますか?

4

2 に答える 2

1

ItemsSourceツリービューを にバインドしUserListますSelectedItem

<TreeView ItemTemplate="{DynamicResource TreeViewDataTemplate}"
  ItemsSource="{Binding ElementName=UserList Path=SelectedItem.SubViewModelCollection}"/>

のアイテムが というプロパティを持つUserListタイプであると仮定します。SubViewModelIEnumerable<T>SubViewModelCollection

于 2013-01-03T19:39:28.350 に答える
0

Prism、特にイベント集約に関連する部分を確認することをお勧めします。これにより、TreeView内のアイテムが選択されたときにアプリケーションでイベントを公開し、そのイベントをアプリケーションの他の場所で使用して、選択したSubViewModelにItemControlをバインドすることができます。これら2つの部分の間に不要な結合を導入する必要はありません。あなたのアプリケーションの。

于 2013-01-03T19:47:53.983 に答える