Fragensteller
Template Parameter im HierarchicalDataTemplate und im DataTemplate

Frage
-
Hallo Zusammen,
ich bin ein neuling und versuche mich gerade am WPF Treeview. Mein HierarchicalDataTemplate und mein DataTemplate sollen gleich aussehen aber unterschiedliche Context-Menüs bekommen. Für das gleiche aussehen wollte ich mit einem ControlTemplate sorgen. Aber irgendwie funktioniert das nicht. Warum nicht bzw. wie funktioniert es doch?
Für Hilfe wäre ich Euch sehr dankbar
Jürgen
<TreeView AllowDrop="True" Name="MyTreeview" > <TreeView.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> <Style x:Key="TreeviewitemBezeichnung" TargetType="{x:Type TextBlock}"> <Setter Property="Background" Value="Beige"/> <Setter Property="Text" Value="{Binding Path=Bezeichnung}"/> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type TreeViewItem}}}" Value="True"> <Setter Property="TextBlock.Background" Value="Blue"/> </DataTrigger> </Style.Triggers> </Style> <ControlTemplate x:Key="MyItem" TargetType="ItemsControl"> <StackPanel Orientation="Horizontal"> <Image Width="16" Height="16" Source="{Binding ImagePath, Converter={StaticResource imgconv}}"/> <TextBlock Style="{StaticResource TreeviewitemBezeichnung}"/> </StackPanel> </ControlTemplate> <HierarchicalDataTemplate DataType="{x:Type my:Ordner}" ItemsSource="{Binding Path=Children}" Template="{StaticResource ResourceKey=MyItem}"> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type my:Daten}" Template="{StaticResource ResourceKey=MyItem}" > </DataTemplate> </TreeView.Resources> </TreeView>
Alle Antworten
-
Hallo Jürgen,
Schau Dir mal folgenden Beispiel an http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode
Gruss,
- Als Antwort vorgeschlagen Ionut DumaModerator Freitag, 1. März 2013 16:56
-
Hallo Ionut,
danke für Deine Antwort. Dann muss ich wohl den Regelverstoß "don't repeat yourself" in kauf nehmeb.
Gruß
Jürgen
<TreeView AllowDrop="True" Name="MyTreeview" > <TreeView.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> <Style x:Key="TreeviewitemBezeichnung" TargetType="{x:Type TextBlock}"> <Setter Property="Background" Value="Beige"/> <Setter Property="Text" Value="{Binding Path=Bezeichnung}"/> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type TreeViewItem}}}" Value="True"> <Setter Property="TextBlock.Background" Value="Blue"/> </DataTrigger> </Style.Triggers> </Style> <HierarchicalDataTemplate DataType="{x:Type my:Ordner}" ItemsSource="{Binding Path=Children}"> <StackPanel Orientation="Horizontal"> <Image Width="16" Height="16" Source="{Binding ImagePath, Converter={StaticResource imgconv}}"/> <TextBlock Style="{StaticResource TreeviewitemBezeichnung}"/> </StackPanel> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type my:Daten}"> <StackPanel Orientation="Horizontal"> <Image Width="16" Height="16" Source="{Binding ImagePath, Converter={StaticResource imgconv}}"/> <TextBlock Style="{StaticResource TreeviewitemBezeichnung}"/> </StackPanel> </DataTemplate> </TreeView.Resources> </TreeView>