2014-06-10 3 views
0

WPF 창에 버튼 컨트롤이 몇 개 있지만 용도는 다르지만 의미/작업에 따라 다르게 스타일을 지정해야합니다. TargetType을 사용하여 전 세계적으로 스타일을 지정할 수있는 스타일을 알고 있습니다.스타일을 사용하여 WPF 버튼을 조작하지만 선택적으로

그러나 버튼을 선택적으로 스타일링하고 싶다면 어떻게해야합니까?

계산기 예제 : 일부 단추는 숫자를 나타내고 다른 단추는 추가, 나누기와 같은 기능을 나타냅니다. 그래서 숫자 버튼을 초록색으로, 기능 버튼을 파란색으로 지정하겠습니다.

내 접근 방식은 Button에서 상속 및 사용자 정의 버튼 컨트롤, NumberButton, FunctionButton을 확인한 다음 "해킹"는의 적은 더 나은 방법이 있습니까 등 <Style TargetType="{x:Type my:NumberButton}">

사용했을 것이다? 이 작업을 스타일 정의에서 선택적으로 수행 할 수 있습니까?

감사합니다.

+0

당신이'DataTriggers'를 사용하는 방법에 대해 생각 해본 적이 있습니까? – franssu

답변

0

서로 다른 값에 ButtonTrigger 다른 세터의 Tag 속성을 사용하는 수 하나 개의 암시 Style 다음 하나 개의 솔루션에서 모든 것을 유지하려면

<Style TargetType="{x:Type my:NumberButton}"> 
    <Setter Property="Background" Value="Red"/> 
    <Style.Triggers> 
     <Trigger Property="Tag" Value="GreenBackground"> 
      <Setter Property="Background" Value="Green"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

당신은 버튼 될 경우

<my:NumberButton Tag="GreenBackground"/> 
+0

"GreenBackground"라는 태그를 "NumberButton"이라고하거나 추상화를보다 분명하게 나타내야하지 않습니까? – franssu

+0

당신은'Tag' 값에 대해 트리거 할 수 있습니다. 이것은 아이디어를 보여주기위한 예일뿐입니다 – dkozl

0

WPF에서 Style의를 사용하여, 우리는 그들을 x:Key 값을를 선언하지 않음으로써 암시 적으로 적용 할 선언 할 수

<Style TargetType="{x:Type SomeType}"> 
    ... 
</Style> 

이 암시 적 유형 SomeType의 모든 컨트롤에 적용됩니다. Style는이 값을 x:Key 선언 명시 적으로 적용 할 선언 될 수

<Style x:Key="SomeStyle" TargetType="{x:Type SomeType}"> 
    ... 
</Style> 

...

<SomeType Style="{StaticResource SomeStyle}" /> 

SomeStyle

만이 하나의 제어에 적용된다. 자세한 내용은 MSDN의 Styling and Templating 페이지를 참조하십시오.

0

identifier을 스타일에 추가하면 "전 세계"에 적용되지 않습니다.

<Window.Resources> 
    <Style x:Key="NumberButton" TargetType={x:Type Button}/> 
    <Style x:Key="FunctionButton" TargetType={x:Type Button}/> 
</Window.Resources> 

이제 귀하의 버튼은 각 버튼에 특정 스타일의 이름을 참조하여 원하는 방식으로 스타일을 할 수 있습니다

<Button Style="{StaticResource NumberButton}"/> 
관련 문제