2012-11-08 1 views
1

Je recherche un équivalent WPF TreeView de TreeView.HideSelection = false. Est-ce que quelqu'un a une idée?TreeView.HideSelection = false - équivalent dans WPF

+0

essayez de regarder à travers ce lien (il me semblait similaire) http://stackoverflow.com/questions/7905881/wpf-treeviewitem-toggle-button-visibility. – wjhguitarman

+0

Que devez-vous faire exactement? Je ne sais pas ce que TreeView.HideSelection serait. Est-ce des winforms? –

Répondre

1

Si ma compréhension de TreeView.HideSelection est correcte, placez ce qui suit dans vos ressources:

<ControlTemplate x:Key="StaysHighlightedTreeViewItemTemplate" TargetType="{x:Type TreeViewItem}"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition MinWidth="19" Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"> 
      <ToggleButton.Style> 
       <Style TargetType="{x:Type ToggleButton}"> 
        <Setter Property="Focusable" Value="False"/> 
        <Setter Property="Width" Value="16"/> 
        <Setter Property="Height" Value="16"/> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="{x:Type ToggleButton}"> 
           <Border Background="Transparent" Height="16" Padding="5" Width="16"> 
            <Path x:Name="ExpandPath" Data="M0,0 L0,6 L6,0 z" Fill="Transparent" Stroke="#FF989898"> 
             <Path.RenderTransform> 
              <RotateTransform Angle="135" CenterY="3" CenterX="3"/> 
             </Path.RenderTransform> 
            </Path> 
           </Border> 
           <ControlTemplate.Triggers> 
            <Trigger Property="IsMouseOver" Value="True"> 
             <Setter Property="Stroke" TargetName="ExpandPath" Value="#FF1BBBFA"/> 
             <Setter Property="Fill" TargetName="ExpandPath" Value="Transparent"/> 
            </Trigger> 
            <Trigger Property="IsChecked" Value="True"> 
             <Setter Property="RenderTransform" TargetName="ExpandPath"> 
              <Setter.Value> 
               <RotateTransform Angle="180" CenterY="3" CenterX="3"/> 
              </Setter.Value> 
             </Setter> 
             <Setter Property="Fill" TargetName="ExpandPath" Value="#FF595959"/> 
             <Setter Property="Stroke" TargetName="ExpandPath" Value="#FF262626"/> 
            </Trigger> 
           </ControlTemplate.Triggers> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </ToggleButton.Style> 
     </ToggleButton> 
     <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True"> 
      <ContentPresenter x:Name="PART_Header" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
     </Border> 
     <ItemsPresenter x:Name="ItemsHost" Grid.ColumnSpan="2" Grid.Column="1" Grid.Row="1"/> 
    </Grid> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsExpanded" Value="False"> 
      <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/> 
     </Trigger> 
     <Trigger Property="HasItems" Value="False"> 
      <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/> 
     </Trigger> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/> 
     </Trigger> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

<Style x:Key="StaysHighlightedTreeViewItem" TargetType="{x:Type TreeViewItem}"> 
    <Setter Property="Template" Value="{StaticResource StaysHighlightedTreeViewItemTemplate}"/> 
</Style> 

Ensuite, utilisez le style comme ceci:

<TreeView ItemContainerStyle="{StaticResource StaysHighlightedTreeViewItem}" /> 

Le modèle de contrôle par défaut a le déclencheur suivant:

<MultiTrigger> 
    <MultiTrigger.Conditions> 
     <Condition Property="IsSelected" Value="True"/> 
     <Condition Property="IsSelectionActive" Value="False"/> 
    </MultiTrigger.Conditions> 
    <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
</MultiTrigger> 

Ceci a modifié la surbrillance de l'élément sélectionné lorsque n la sélection n'était pas active (c.-à-d. en supprimant ce déclencheur, le surlignage standard est utilisé même s'il n'a pas le focus.

Questions connexes