2012-11-08 2 views
1

TreeView.HideSelection = false에 해당하는 WPF TreeView를 검색하고 있습니다. 누군가 아이디어가 있습니까?TreeView.HideSelection = false - WPF에 해당합니다.

+0

이 링크 (내게 비슷한 소리)를 살펴 봅니다. http://stackoverflow.com/questions/7905881/wpf-treeviewitem-toggle-button-visibility. – wjhguitarman

+0

정확히 무엇을해야합니까? 나는 TreeView.HideSelection이 무엇인지 알지 못한다. 그것은 winforms인가? –

답변

1

TreeView.HideSelection에 대한 이해가 올바른 경우 자원에 다음과 같은 장소 :

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

는 다음과 같이 스타일을 사용

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

기본 컨트롤 템플릿은 다음 트리거가 :

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

이렇게하면 선택한 항목의 강조 표시가 변경되었습니다. whe 선택이 활성화되지 않았습니다 (예 : 키보드 포커스가 없음),이 트리거를 제거하면 포커스가없는 경우에도 표준 강조 표시가 사용됩니다.