2012-10-12 4 views
0

나는 자원 내에서 다음 스타일은편집 스타일 요소는

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="Button"> 

      <Grid> 
       <Rectangle Fill="#262626" Name="Normal"/> 
       <Rectangle Fill="#3f3f41" Name="Hover" Visibility="Hidden"/> 
       <Rectangle Fill="#007acc" Name="Pressed" Visibility="Hidden"/> 

       <Image Name="Icon"/> 
       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Grid> 

      <ControlTemplate.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter TargetName="Hover" Property="Visibility" Value="Visible"/> 
        <Setter TargetName="Pressed" Property="Visibility" Value="Hidden"/> 
       </Trigger> 
       <Trigger Property="IsPressed" Value="True"> 
        <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/> 
        <Setter TargetName="Hover" Property="Visibility" Value="Hidden"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 

     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

을 dictionay하고 난 이름을 가진 이미지의"소스 "를 변경해야 아이콘 "내 단추 (내 MainWindow.xaml 안에 있음)

하지만 "소스가 인식되지 않거나 액세스 할 수 없습니다"라는 오류 메시지가 표시됩니다.

단추에서 이름이 "아이콘"인 이미지의 "원본"특성을 어떻게 변경합니까?

답변

2

WPF 컨트롤은 실제로 비헤이비어에서 실행됩니다. 버튼에는 이미지가 포함되지 않습니다. 버튼이 Contentcontrol이기 때문에 버튼의 내용 안에 아무 것도 넣을 수 있습니다. 당신은 스타일에서

<Button> 
<image ... /> 
</Button 

을 사용할 수 있습니다 위 :

 <Grid> 
      <Rectangle Fill="#262626" Name="Normal"/> 
      <Rectangle Fill="#3f3f41" Name="Hover" Visibility="Hidden"/> 
      <Rectangle Fill="#007acc" Name="Pressed" Visibility="Hidden"/> 

      <Image Name="Icon" Source="{TemplateBinding Tag}" /> 
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     </Grid> 

     <ControlTemplate.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter TargetName="Hover" Property="Visibility" Value="Visible"/> 
       <Setter TargetName="Pressed" Property="Visibility" Value="Hidden"/> 
      </Trigger> 
      <Trigger Property="IsPressed" Value="True"> 
       <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/> 
       <Setter TargetName="Hover" Property="Visibility" Value="Hidden"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 

    </ControlTemplate> 
</Setter.Value> 

지금 당신이 버튼

의 태그 속성에 소스를 지정할 수 있습니다 그러나 th 올바른 방법이 아닙니다. 컨트롤 비헤이비어를 지원하는 속성에 TemplateBinding을 사용해야합니다. ButtonBinding은 Image를 지원하는 반면, ButtonBinding은이를 지원합니다.

다른 것이 필요한 경우 알려주십시오.

+0

감사합니다. 매우 유용한 답변입니다. – user962284

관련 문제