none
Template Parameter im HierarchicalDataTemplate und im DataTemplate RRS feed

  • 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>
    

    Dienstag, 19. Februar 2013 16:31

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,

    Ionut

    Donnerstag, 21. Februar 2013 12:39
    Moderator
  • 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>

    Donnerstag, 21. Februar 2013 17:06