2010-05-03 1 views
0

각 확장기 컨트롤 내에 ViewTree 컨트롤이있는 확장기 컨트롤이 여러 개 있습니다. 한 ViewTree에서 ViewTreeItem을 선택한 다음 다른 ViewTree에서 다른 ViewTreeItem을 선택하면 새로 선택된 ViewTreeItem이 진한 파란색으로 강조 표시되지만 마지막으로 선택한 항목은 이제 매우 밝은 음영으로 강조 표시됩니다. 제가 무슨 말을하고 있는지 보려면 www.zunjaa.com/public/images/screen.jpg를보십시오. 더 이상 사용하지 않는 항목이 밝은 파란색을 나타내지 않도록하려면 어떻게해야합니까?WPF TreeViewItem 선택 해제 된 항목이 여전히 가볍게 강조 표시되었습니다.

감사합니다.

답변

0

이는 TreeViewItem의 기본 템플릿의 트리거로 인해 발생 : 기본 에어로 테마 템플릿이 제거

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

잎 :

<PathGeometry x:Key="TreeArrow" Figures="M0,0 L0,6 L6,0 z"/> 
<Style x:Key="ExpandCollapseToggleStyle" 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 Width="16" Height="16" Background="Transparent" Padding="5,5,5,5"> 
        <Path x:Name="ExpandPath" Fill="Transparent" Stroke="#FF989898" Data="{StaticResource TreeArrow}"> 
         <Path.RenderTransform> 
          <RotateTransform Angle="135" CenterX="3" CenterY="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" CenterX="3" CenterY="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> 

<ControlTemplate x:Key="MyTemplate" 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" Style="{StaticResource ExpandCollapseToggleStyle}" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"/> 
     <Border x:Name="Bd" SnapsToDevicePixels="true" Grid.Column="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> 
      <ContentPresenter x:Name="PART_Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" ContentSource="Header"/> 
     </Border> 
     <ItemsPresenter x:Name="ItemsHost" Grid.Column="1" Grid.ColumnSpan="2" 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> 
+0

안녕 존, 당신의 응답을 주셔서 감사합니다. WPF에 익숙하지 않습니다. 편집 할 수 있도록 기본 템플릿을 찾을 수있는 위치를 알려주시겠습니까? –

+0

현재 템플릿을 복사하는 가장 빠른 방법은 대개 마우스 오른쪽 버튼을 클릭하고 템플릿 편집 -> 혼합 복사본 편집입니다. 위의 코드를 Window의 모든 TreeViewItem에 사용하려면 Window.Resources에 위 코드를 추가하십시오.

0

이 도움을 주셔서 감사합니다. 이것은 내가 함께 결국 무엇이며 나를 위해 작동 :

<Window.Resources> 
<Style TargetType="TreeViewItem"> 
    <Style.Resources> 
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> 
    </Style.Resources> 
    <Style.Triggers> 
    <MultiTrigger> 
     <MultiTrigger.Conditions> 
     <Condition Property="IsSelected" Value="true"/> 
     <Condition Property="IsSelectionActive" Value="false"/> 
     </MultiTrigger.Conditions> 
     <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
    </MultiTrigger> 
    </Style.Triggers> 
</Style> 
</Window.Resources>