2012-04-11 2 views
1

J'ai la vue arborescente suivant défini dans mon XAML:Les déclencheurs de style WPF sur un TreeView?

 <TreeView Name="PST_TreeView" 
       Grid.Row="0" 
       Grid.Column="0" 
       Width="Auto" 
       Height="Auto" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       ItemsSource="{Binding SitesCollection}" 
       ItemTemplate="{StaticResource SitesTemplate}" 
       Style="{StaticResource TreeViewStyleBasic}" /> 

Avec des liaisons de ressources Ciblage fichier de ressources:

<Style x:Key="TreeViewStyleBasic" TargetType="TreeView"> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="BorderBrush" Value="{DynamicResource TitleBarButtons_BorderBrush}" /> 
    <Setter Property="BorderThickness" Value="0 0 2 0" /> 
</Style> 

<Style x:Key="TreeViewItemStyle_CatNodes" TargetType="{x:Type TextBlock}"> 
    <Setter Property="Foreground" Value="Snow" /> 
    <Setter Property="FontFamily" Value="Calibri" /> 
    <Setter Property="FontSize" Value="16" /> 
    <Setter Property="FontWeight" Value="Normal" /> 
    <Setter Property="TextAlignment" Value="Left" /> 
</Style> 

<Style x:Key="TreeViewItemStyle_ChildNodes" TargetType="{x:Type TextBlock}"> 
    <Setter Property="Foreground" Value="Snow" /> 
    <Setter Property="FontFamily" Value="Calibri" /> 
    <Setter Property="FontSize" Value="14" /> 
    <Setter Property="FontWeight" Value="Normal" /> 
    <Setter Property="FontStyle" Value="Italic" /> 
    <Setter Property="TextAlignment" Value="Left" /> 
</Style> 

<DataTemplate x:Key="VolumeInfoDataTemplate"> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Width="{TemplateBinding Width}" 
        Height="{TemplateBinding Height}" 
        Margin="5" 
        Style="{DynamicResource TreeViewItemStyle_ChildNodes}" 
        Text="{Binding VolumeName}" /> 
    </StackPanel> 
</DataTemplate> 

<HierarchicalDataTemplate x:Key="SitesTemplate" 
          ItemsSource="{Binding VolumesList}" 
          ItemTemplate="{StaticResource VolumeInfoDataTemplate}"> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Width="{TemplateBinding Width}" 
        Height="{TemplateBinding Height}" 
        Margin="5" 
        Style="{DynamicResource TreeViewItemStyle_CatNodes}" 
        Text="{Binding SiteName}" /> 
    </StackPanel> 
</HierarchicalDataTemplate> 

Les XAML et l'aspect des ressources ups ci-dessus travail trouver et comme prévu. Comment pourrais-je utiliser des déclencheurs pour étendre mes définitions de style pour dire par exemple gérer l'événement 'IsSelected' de sorte que le noeud de l'arbre sélectionné aura une bordure gris ardoise et un fond gris clair?

RECHERCHE: Kind of thing I am going for.

MISE À JOUR: Il n'y a pas de propriété IsSelected sur le TreeView, mais TreeViewItem ne dispose d'une définition.

Répondre

0

Essayez ceci:

<DataTemplate x:Key="VolumeInfoDataTemplate"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Width="{TemplateBinding Width}" 
         Height="{TemplateBinding Height}" 
         Margin="5" 
         Style="{DynamicResource TreeViewItemStyle_ChildNodes}" 
         Text="{Binding VolumeName}" 
         Name="Tb" /> 
     </StackPanel> 
     <DataTemplate.Triggers> 
      <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=TreeViewItem}}" Value="True"> 
        <Setter TargetName="Tb" Property="Background" Value="LightGray"/> 
      </DataTrigger> 
     </DataTemplate.Triggers> 
    </DataTemplate> 
+0

j'ai réussi à obtenir quelque chose d'autre travail à partir du lien ci-dessus collé, mais je suis curieux de venir en butée contre l'extension de balisage RelativeSource ... pouvez-vous s'il vous plaît expliquer un peu plus sur ce que cela est Faire? – IbrarMumtaz

+0

Par défaut, une liaison sera relative au DataContext du contrôle. Avec RelativeSource, vous pouvez spécifier un objet différent. Dans cet exemple, la liaison recherchera le premier parent de type TreeViewItem et vérifiera sa propriété IsSelected. http://msdn.microsoft.com/en-us/library/ms743599.aspx –

Questions connexes