2011-10-14 1 views
0

확장자 전환 단추 스타일에 따라 시각적으로 원하는 부분에 가까워 지지만 제대로 반응하지 않습니다. 펼치거나 접기 위해 클릭하면 항상 반응하지 않습니다. 어떤 아이디어? TIA.WPF 사용자 지정 확장기 단추 스타일이 마우스 클릭에 올바르게 응답하지 않습니다.

 <ControlTemplate x:Key="ExpanderToggleButton" 
     TargetType="ToggleButton"> 
      <Canvas Width="14" Height="14"> 
       <Rectangle Stroke="Gray" 
          RenderOptions.EdgeMode="Aliased" 
          StrokeThickness="1" Width="14" Height="14" 
          Canvas.Left="0" Canvas.Top ="0"/> 
       <Path RenderOptions.EdgeMode="Aliased" 
          Name="ExpandPath" 
          Stroke="Black" 
          Margin="0" 
          StrokeThickness="1" 
          Data="M 5 1 L 5 9 M 1 5 L 9 5" 
         Canvas.Left="2" Canvas.Top ="2"/>    
      </Canvas> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
        <Setter Property="Data" TargetName="ExpandPath" 
           Value="M 1 5 L 9 5"/> 
       </Trigger>     
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     <!-- Expander style --> 
     <Style TargetType="Expander">     
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Expander"> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto"/> 
           <RowDefinition Name="ContentRow" Height="0"/> 
          </Grid.RowDefinitions>        
          <Border 
           Name="Border" 
           Grid.Row="0"          
           BorderThickness="1" 
           CornerRadius="4,4,0,0" > 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="15" /> 
             <ColumnDefinition Width="*" /> 
            </Grid.ColumnDefinitions> 
            <ToggleButton 
             Grid.Column="0" 
             IsChecked="{Binding Path=IsExpanded, 
                  Mode=TwoWay, 
             RelativeSource={RelativeSource 
                  TemplatedParent}}" 
             OverridesDefaultStyle="True" 
             Template="{StaticResource 
               ExpanderToggleButton}" /> 
            <ContentPresenter 
             Grid.Column="1" 
             Margin="4" 
             ContentSource="Header" 
             RecognizesAccessKey="True" /> 
           </Grid> 
          </Border> 
          <Border 
           Name="Content" 
           Grid.Row="1"          
           BorderThickness="1,0,1,1" 
           CornerRadius="0,0,4,4" > 
           <ContentPresenter Margin="4" /> 
          </Border> 
         </Grid> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsExpanded" Value="True"> 
           <Setter TargetName="ContentRow" Property="Height" 
             Value="{Binding 
             ElementName=Content,Path=DesiredHeight}" /> 
          </Trigger>        
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

답변

3

을 "투명"는 ControlTemplateCanvas의 배경을 설정합니다

<ControlTemplate x:Key="ExpanderToggleButton" 
    TargetType="ToggleButton"> 

    <!-- The canvas needs a background to work properly with clicks, 
     so set it to Transparent --> 
    <Canvas Width="14" Height="14" Background="Transparent"> 
     <Rectangle Stroke="Gray" 
        RenderOptions.EdgeMode="Aliased" 
        StrokeThickness="1" Width="14" Height="14" 
        Canvas.Left="0" Canvas.Top ="0"/> 
     <Path RenderOptions.EdgeMode="Aliased" 
        Name="ExpandPath" 
        Stroke="Black" 
        Margin="0" 
        StrokeThickness="1" 
        Data="M 5 1 L 5 9 M 1 5 L 9 5" 
       Canvas.Left="2" Canvas.Top ="2"/> 
    </Canvas> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsChecked" Value="True"> 
      <Setter Property="Data" TargetName="ExpandPath" 
         Value="M 1 5 L 9 5"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

당신이 (+ 또는 경로에 정확히 클릭해야 더 캔버스 배경이없는 경우 -)를 클릭하여 등록하십시오. 캔버스 배경을 사용하면 캔버스의 아무 곳이나 클릭 할 수 있습니다.

+0

는 친절 감사합니다. 이걸 어떻게 압니까? –

+0

내가 도울 수있어서 기뻐요! 나도 같은 문제가 생겼어 :) –

0

이 문제는 scrollviewer가 관련된 경우 가끔 발생합니다. 이 세터를 추가

시도 : 그 것이었다

<Setter Property="ScrollViewer.CanContentScroll" Value="False" /> 
관련 문제