2010-08-03 2 views
1

사소한 문제가 있습니다. 스타일을 쉽게 제어 할 수 있도록 스타일과 컨트롤 템플릿 외부에 많은 문체 항목을 넣고 싶습니다. 그래서 스크롤바의 반복 버튼에 대해서는이 모든 것을 작동 시키지만 IsPressed를 얻을 수 있습니다. 템플릿에서만 작동합니다.스크롤 막대의 WPF 반복 단추는 스타일이 아닌 템플릿에서 IsPressed 만 트리거합니다.

<ControlTemplate x:Key="ScrollBarButtonCT" TargetType="{x:Type RepeatButton}"> 
    <Border 
     x:Name="borderRepeatButton" 
     Margin="1" 
     CornerRadius="2" 
     Background="{TemplateBinding Background}"> 
     <Path x:Name="pathArrow" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Fill="{DynamicResource ThumbBrush}" 
      Data="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}" /> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsPressed" Value="true"> 
      <Setter TargetName="borderRepeatButton" Property="Background" Value="{DynamicResource ThumbPressedBrush}" /> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

그리고 스타일은 내가 스타일에서 일을 IsPressed되지 수

<Style x:Key="ScrollBarButtonStyle" TargetType="{x:Type RepeatButton}"> 
    <Setter Property="OverridesDefaultStyle" Value="true"/> 
    <Setter Property="Focusable" Value="false"/> 
    <Setter Property="IsTabStop" Value="false"/> 
    <Setter Property="Background" Value="{DynamicResource ScrollBarBGBrush}"/> <!-- borderRepeatButton --> 
    <Setter Property="OpacityMask" Value="{DynamicResource ThumbBrush}"/> <!-- pathArrow--> 
    <Setter Property="Template" Value="{StaticResource ScrollBarButtonCT}"/> 
    <Style.Triggers> 
     <!--<Trigger Property="IsPressed" Value="true"> .... this doesn't work coming from the style 
      <Setter Property="Background" Value="{DynamicResource ThumbPressedBrush}" /> 
     </Trigger>--> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Foreground" Value="{DynamicResource ScrollBarDisabledBGBrush}"/> 
     </Trigger> 
     <Trigger Property="IsMouseOver" Value="true"> 
      <Setter Property="Background" Value="{DynamicResource ThumbHoverBrush}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

입니다 :

는 그래서 템플릿 (기본적으로)입니다. Snoop IsPressed를 살펴보면 컨트롤을 사용할 때 잘 처리됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사!

답변

1

나는 이것이 오래 알고 있지만,이 템플릿에서 버그가 수 있어야 밝혀졌습니다. 우리는 그것을 작동시키지 않을 수 있었고, 내부의 어떤 사람들과 이야기를하거나 어느 정도 확인했습니다. 템플릿에 값을 남기고 다른 RepeatButton 스타일이 필요할 때 템플리트를 바꿔서 해결했습니다.

1

왜 작동하지 않는지 모르겠지만 정적 리소스가 필요합니까? 한 곳에서 모든 스타일을 얻을 수 있습니다.

<Style x:Key="xxxtyle" TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsPressed" Value="True"> 
          <Setter Property="Fill" TargetName="rectangle" Value="#FFD5D5D5"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

추신은 TargetType = "유형 이름"==은 TargetType = "{X : 유형 유형 이름}"

+0

TargetType = "typeName"== TargetType = "{x : 유형 typename}" .net 3.5 또는 4에 대한 것입니까? – dex3703

관련 문제