2010-06-06 7 views
0

프로그래밍 방식으로 내 화살표의 "획"을 설정하는 방법을 알아 내는데 어려움이 있습니다. 메뉴 모음에서이 버튼을 사용하고 있으며 현재 화살표가 녹색으로 변경되고 다른 모든 화살표가 회색으로 변경되도록 선택합니다.프로그래밍 방식으로 ControlTemplate 설정하기

<Style x:Key="FooterGrayButtonStyle" TargetType="{x:Type Button}"> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
    <Setter Property="VerticalContentAlignment" Value="Center"/> 
    <Setter Property="MinHeight" Value="35" /> 
    <Setter Property="FontSize" Value="16"/> 
    <Setter Property="Margin" Value="0,5,10,5" /> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Grid> 
        <Border x:Name="Bd" Background="#FF535A65" BorderBrush="Black" BorderThickness="1" CornerRadius="10"> 
         <Path x:Name="arrow" Stretch="Fill" Stroke="#FFB1BB1C" StrokeThickness="5" HorizontalAlignment="Right" Margin="5" 
           StrokeEndLineCap="Round" StrokeStartLineCap="Round" StrokeLineJoin="Miter" Width="13" Height="23" Data="M0,0 L1,1 0,2" /> 
        </Border> 
        <ContentPresenter HorizontalAlignment="Left" Margin="15,-2,30,0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsPressed" Value="True"> 
         <Setter TargetName="Bd" Property="Background" Value="#FFB1BB1C" /> 
         <Setter Property="Stroke" TargetName="arrow" Value="White"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Stroke" TargetName="arrow" Value="#FFB7B7B7"/> 
         <Setter Property="Foreground" Value="#FFB7B7B7"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

답변

1

일반적으로 컨트롤의 속성으로 시각적으로 표현되는 상태를 표현하고 싶습니다. 버튼에는 선택된 상태를 나타내는 내장 속성이 없지만 ToggleButton은 IsChecked를 수행합니다. ToggleButton을 사용할 수없는 경우 Attached Property을 만들 수 있으며 현재 선택된 Button을 결정하는 코드에서 설정할 수 있습니다. 그런 다음 IsChecked와 동일한 방법으로 트리거에서 사용할 수 있습니다.

<Trigger Property="local:MyProperties.IsSelected" Value="True"> 
    <Setter TargetName="arrow" Property="Stroke" Value="Green"/> 
</Trigger> 
0

당신이 트리거 추가 할 수 없습니다 :

<Trigger Property="IsFocused" Value="True"> 
    <Setter Property="StrokeEndLineCap" Value="Arrow" TargetName="arrow"/> 
</Trigger> 

을하거나 문제가 당신의 트리거로 업데이트되지 경로입니까?

관련 문제