1

2つの単純なViewModelがNodeViewModelあり、LeafViewModelそれをTreeViewのアイテムにすることができます。以下のように。カスタムテンプレートセレクターが必要ないため、テンプレートは暗黙的に適用されます。

<UserControl x:Class="MyProject.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:ViewModels="clr-namespace:MyProject.ViewModels" mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" d:DataContext="{d:DesignData /SampleData/NodeViewModelSampleData.xaml}">
 <UserControl.Resources>
  <HierarchicalDataTemplate DataType="{x:Type ViewModels:NodeViewModel}" ItemsSource={Binding Children}>
   <StackPanel Orientation="Horizontal">
    <CheckBox Content="{Binding Name}" IsChecked="{Binding Result}"/>
   </StackPanel>
  </HierarchicalDataTemplate>
  <HierarchicalDataTemplate DataType="{x:Type ViewModels:LeafViewModel}">
   <StackPanel Orientation="Horizontal">
    <TextBlock Text="{Binding Name}" />
   </StackPanel>
  </HierarchicalDataTemplate>
 </UserControl.Resources>
 <TreeView ItemsSource="{Binding Children}" />
</UserControl>

NodeViewModelsとsの両方を持つツリーを含むサンプルデータをブレンドで生成しLeafViewModel、暗黙のテンプレート選択を使用しながら、それをツリービューのデータとして表示するにはどうすればよいですか?

4

2 に答える 2

1

ある種のモックフレームワークを使用しない場合、これを行う最も簡単な方法は、ビューモデルのインスタンスを生成するクラスをハックして、Blendのデータソースとして使用することです。

XAMLでテストデータを定義する方が簡単かもしれませんが、これは、ビューモデルクラスがそれを可能にするように設計されていることを条件としています(たとえば、パラメーターなしのコンストラクターとContentProperty属性を使用)。

于 2010-11-19T00:12:08.860 に答える
0

答えは簡単だと思います。できません。

Blendは、暗黙のデータテンプレートとテンプレートセレクターでは実際にはうまく機能しません。これは、サンプルデータだけでなく、インプレースwysiwygテンプレート編集にも当てはまります。したがって、ブレンド可能性のために、可能な限り暗黙のテンプレートとテンプレートセレクターを避けるようにする必要があります。

于 2010-11-30T09:14:09.293 に答える