2013-11-21 2 views
0

TabControl 템플릿과 스타일을 가지고 있지만 탭에 클릭 가능한 것과 관련된 몇 가지 문제가 있습니다.WPF에서 내 전체 탭 clicakble 만드는 방법

내 탭 (아래쪽 테두리)의 폭과 높이가 지정되어 있지만 불행히도 테두리 전체를 클릭 할 수 없다는 사실을 알게 될 것입니다. 탭 안에 문자가 하나만 있으면 탭을 선택하려면 문자를 마우스로 정확히 가리켜 야합니다.

테두리 안쪽 아무 곳이나 클릭하면 탭이 선택됩니다. 국경

<Style x:Key="MainTabItem" TargetType="TabItem"> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TabItem"> 
       <Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="#EAF1F7" CornerRadius="3,3,0,0" Height="60" Width="70" Margin="-2,0,2,0"> 
        <ContentPresenter x:Name="ContentSite" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header"/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
         <Setter Property="Foreground" Value="Black" /> 
         <Setter TargetName="Border" Property="Background"> 
          <Setter.Value> 
           <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
            <GradientStop Color="#EDF1FA" Offset="0"/> 
            <GradientStop Color="#EAF1F7" Offset="1"/> 
           </LinearGradientBrush> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
        <Trigger Property="IsSelected" Value="False"> 
         <Setter TargetName="Border" Property="BorderThickness" Value="0" /> 
         <Setter TargetName="Border" Property="BorderThickness" Value="0" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<Style x:Key="MainTabControl" TargetType="TabControl"> 

    <Setter Property="BorderThickness" Value="2"></Setter> 
    <Setter Property="BorderBrush" Value="#CFE2F0"></Setter> 
    <Setter Property="Background" Value="#EAF1F7"/> 
    <Setter Property="BorderBrush" Value="#EAF1F7"/> 
    <Setter Property="Effect"> 
     <Setter.Value> 
      <DropShadowEffect Direction="150" BlurRadius="20" ShadowDepth="5" Opacity=".3"/> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
       <GradientStop Offset="0" Color="#EAF1F7" /> 
       <GradientStop Offset=".2" Color="#EAF1F7" /> 
       <GradientStop Offset=".6" Color="#C7D7E4" /> 
       <GradientStop Offset="1" Color="#EAF1F7" /> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
</Style> 

답변

1

Background="Transparent"을 추가

여기에 내 ControlTemplate이 있습니다.

이유는 배경의 기본값이 null이며 'null'값을 가진 픽셀은 히트 테스트 표시가되지 않기 때문입니다. 투명 픽셀은 히트 테스트 가시입니다 (그리고 그것은 'null'과 'Transparent'가 함께 존재하는 주된 이유입니다).

+0

당신은 그 사람을 ... 완벽하게 작동합니다 :) –