2012-02-02 3 views
7

기본 둥근 사각형에서 다른 모양 (예 : 화살표)으로 WPF 버튼의 모양을 변경하고 싶지만 나머지 스타일을 유지하고 싶습니다. 색상, 테두리 색상, 마우스 오버 상태 등을 채 웁니다. 버튼에 다른 모든 일반 버튼과 동일한 스타일이 있어야합니다 (Windows, 시스템 테마 색상 등의 버전에 달려 있다고 생각합니다. 따라서 다시 만들 수는 없습니다.) 처음부터 버튼 스타일을 선택하고 올바른 색상을 하드 코드).다른 스타일을 변경하지 않고 WPF 버튼의 모양을 변경하십시오.

할 수있는 방법이 있습니까?

답변

0

default Button Template 사본을 만들고 기본 패널을 사용자 정의 모양으로 간단히 변경하십시오.

버튼의 경우 BorderPath과 같은 것으로 바꾸어야합니다.

Path에는 내용이 없으므로 모양과 내용을 격자처럼 서로 겹칠 수있는 다른 패널에 넣어야 할 것입니다.

그래서 최종 결과는 대신 당신은 보통의 버튼 컨트롤을 서브 클래 싱 할 수 있어야 기본

<Button> 
    <ContentPresenter /> 
</Button> 
+1

"기본 단추 서식 파일"은 어떻게 구합니까? 링크 한 MSDN 기사에는 * 샘플 * 템플릿이 있지만 기본 문서는 아닙니다. –

+1

@HenryJackson 나는 이것이 색채 이외의 다른 기본 색이라고 생각한다. 기본적으로'SystemColors'에서 색상을 가져옵니다. 또 다른 방법은 Expression Blend에서 템플릿의 복사본을 만드는 것입니다. – Rachel

1

<Grid> 
    <Path /> 
    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
</Grid> 

같이 보일 것입니다. 그런 다음 사용자 정의 모양을 사용하여 서브 클래 싱 된 단추를 사용자 정의 할 수 있지만 다른 모든 특성은 상속됩니다. 이렇게하면 단추의 모양을 변경할 수 있습니다.
http://msdn.microsoft.com/en-us/library/bb613598.aspx

+0

경계 만 재정의하는 방법에 대한 예를 들어 주시겠습니까? MSDN 기사에서는 블렌드에서 처음부터 테마를 만드는 방법을 보여줍니다. –

0

당신이 버튼을 TemplateTemplateBinding의를 사용할 수있는 Button에 대한 기본 시스템 색상/스타일을 상속하려면 : 당신이 혼합이있는 경우

여기에 사용자 정의 버튼을 만들기위한 좋은 자원이다. 그러나,

<Button> 
    <Button.Template> 
     <ControlTemplate TargetType="Button"> 
      <Grid> 
       <!-- circle to have inherited colour --> 
       <Ellipse Fill="{TemplateBinding Background}" Height="50" Width="50" /> 
       <ContentPresenter /> 
      </Grid> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 

Ellipse 다음 Button에서 배경색을 상속합니다 : 시스템과 동일한 배경 색상을 가진 사용자 정의 모양의 버튼을 만들려는 경우 예를 들어, 아래에 사용할 수 그것은 설정됩니다.

+0

배경색이 올바르지 만 그렇지 않으면 단지 원입니다. 경계선이 없거나 마우스 오버 또는 클릭 상태가없고 내용에 그라데이션 광택이 없습니다. 전체 단추를 처음부터 만드는 것을 피하려고합니다. –

관련 문제