2

他の2つのUserControlを含むShell.xamlファイルがあります。左側は私のTreeViewで、右側は詳細画面です。

選択したTreeViewItemに基づいて詳細画面を切り替え可能にしたい。単純なボタンクリックとタグを使用してこれを実行したため、DataTemplatesを使用してこれを実行できることはわかっていますが<ContentControl Content="{Binding CurrentDetailViewModel}">、選択したTreeViewItemに基づいてこれを実行する方法がわかりません。また、TreeViewを保持するUserControl用の個別のViewModelクラスと、詳細画面ごとに個別のViewModelクラスがあります。

私はTreeViewsでJoshSmithのチュートリアルを使用しています:http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

したがって、彼のTreeViewItemViewModel.csクラスも使用します。

誰かがこれに光を当てることができますか?

ありがとう、

許す

4

1 に答える 1

0

ツリービューと詳細の両方が同じオブジェクトを表示している場合(つまり、ツリービューのItemsSourceに、カスタムコントロールでデータテンプレートを作成するオブジェクトが含まれている場合)、両方のコントロールが共有する基になるViewModelにプロパティを設定できるはずです。カスタムコントロールにデータテンプレートに関連するものを表示させます。

たとえば、ViewModelでは次のようになります。

object TreeViewSelectedItem
{
    get{ return _treeViewSelectedItem;}
    set {_treeViewSelectedItem = value; NotifyPropertyChanged("TreeViewSelectedItem");}
}

Treeview xaml

<TreeView ... SelectedItem={Binding TreeViewSelectedItem Mode=OneWayToSource}".../>

カスタムコントロールxaml

<UserControl>
    <Control.Resources>
        <DataTemplate DataType="{x:Type Plane}">
        ....
        </DataTemplate> 
        <DataTemplate DataType="{x:Type Train}">
        ....
        </DataTemplate>
        <DataTemplate DataType="{x:Type Automobile}">
        ....
        </DataTemplate>
    </Control.Resources>

    <ContentControl Content={Binding TreeViewSelectedItem}"/>
</Usercontrol>
于 2011-04-21T08:32:15.327 に答える