2014-05-23 2 views
0

저는 WPF를 처음 사용하고 있으며 사용자 정의 버튼이있는 대학 용 WPF 프로젝트를 만들고 있습니다.코드에서 버튼 경로의 채우기 속성을 변경하십시오.

<Style x:Key="Button113" TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Grid> 
         <Path x:Name="path" Fill="#FF8E2424" Stretch="Fill" Opacity="0.0" Stroke="{x:Null}" Data="M575.33333,304.87333 C651.33333,305.20667 651.33365,305.20699 651.33365,305.20699 620.33383,380.13463 620.16716,380.46764 620.16716,380.46764 576.16698,380.30114 576.16698,380.30114 576.16698,380.30114 575.50031,305.04016 575.33333,304.87333 575.33333,304.87333 z"/> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Fill" TargetName="path" Value="DarkSlateBlue"/> 
          <Setter Property="Opacity" TargetName="path" Value="0.4"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

하고는 나는 스타일

<Button x:Name="button113" HorizontalAlignment="Right" Margin="0,0,16.25,27.416" Style="{DynamicResource Button113}" VerticalAlignment="Bottom" Width="78" Height="77.834" Content="" ToolTip="" ToolTipOpening="Button_ToolTipOpening" Click="form6_roomBtn_Click"/> 

내가 마우스 호버에있는 버튼을 변경 색상을 만드는 몇 가지 문제가 있었다를 사용하여 버튼을 만들 수 있지만 어떻게 든 트리거와 함께 할 수 있었다.

이제 버튼의 배경 속성을 C# 코드에서 변경하고 싶습니다. 아무 일도 일어나지 않습니다. 내 코드에서 패스의 fill 속성에 액세스하려면 어떻게해야합니까? (나는 path.Fill를 사용하여 시도했지만 경로는 인식되지 않는다).

은 ControlTemplate이 당신이하는 주형하는 클래스가 당신에 의해 정의되지 특히, 두통이된다 이내에는

당신에게

답변

1

액세스 항목을 해주셔서 감사합니다. 이 대신 시도하는 것이 좋습니다 :

<Style x:Key="Button113" TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Grid> 
         <Path x:Name="path" Fill="{TemplateBinding Background}" Stretch="Fill" Opacity="0.0" Stroke="{x:Null}" Data="M575.33333,304.87333 C651.33333,305.20667 651.33365,305.20699 651.33365,305.20699 620.33383,380.13463 620.16716,380.46764 620.16716,380.46764 576.16698,380.30114 576.16698,380.30114 576.16698,380.30114 575.50031,305.04016 575.33333,304.87333 575.33333,304.87333 z"/> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Fill" TargetName="path" Value="DarkSlateBlue"/> 
          <Setter Property="Opacity" TargetName="path" Value="0.4"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

이 방법은 단추의 Background 속성에 경로 채우기를 바인딩합니다. 이제 템플릿 내부에서 물건을 가져 오는 것의 싫증을 내지 않아도 Background 속성을 마음대로 변경할 수 있습니다.

+0

효과가있었습니다. 고마워. – iza92

관련 문제