2009-03-23 3 views
1

이 XAML 코드가 작동하지 않는 이유를 알 수 없습니다. TemplateBinding (아래 참조)을 사용할 때 배경색은 이 아니고으로 설정됩니다. 하지만 정상적인 색상 문자열 (예 : '빨강')을 사용하면 정상적으로 작동합니다. 나는이 방법으로 TemplateBinding을 사용하는 경우WPF에서 TemplateBinding을 사용할 때 Rectangle.Fill 속성이 작동하지 않는 이유는 무엇입니까?

<ControlTemplate x:Key="InstanceButtonTemplate" TargetType="{x:Type Control}"> 
    <Grid> 
     <Rectangle> 
      <Rectangle.Fill> 
       <SolidColorBrush Color="{TemplateBinding Background}"></SolidColorBrush> 
      </Rectangle.Fill> 
     </Rectangle> 
    </Grid> 
</ControlTemplate> 

그러나, 그것은

<ControlTemplate x:Key="InstanceButtonTemplate" TargetType="{x:Type Control}"> 
    <Grid> 
     <Rectangle Fill="{TemplateBinding Background}"></Rectangle> 
    </Grid> 
</ControlTemplate> 

어떤 아이디어 ... 잘 작동?

편집 : 대신 일반 문자열의 XAML을 사용하여 Rectangle.Fill 속성에 할당 할 수해야하는 이유 내가 오히려 그라데이션 브러시를 사용하려면이 옵션을 확장하려는, 명확하게, 그건. 컬러가 다른 유형이 있기 때문이다

답변

5

다음 배경

배경, 컬러는 브러시입니다 .. 물론 색상 .. 당신은 컬러로 브러시를 변환하는 IValueConverter를 사용할 수 있습니다 ..

HTH

+0

내 생각뿐 이었지만, (intellisense를 사용하여) 배경을 보았습니다. (Control에서) 배경색은 실제로 브러시가 아니라 색상입니다. – willem

+0

@willemo, 그게 다예요. 배경은 브러쉬이며 사각형입니다. 채우기는 브러시입니다. SolidColorBrush.Color를 Background 속성으로 설정하면 SolidColorBrush.Color가 Color이고 Background가 Brush이므로 실패합니다. Rectangle.Fill = 배경은 두 가지 브러시 중 하나입니다. – Rich

+0

또는 브러쉬를 색상으로 변환 할 수있는 IValueConverter의 불쾌한 구현을 작성하십시오 ...하지만 당신은 다른 종류의 브러쉬를 처리해야합니다. 브러쉬에 대한 자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us /library/aa970904.aspx – Arcturus

관련 문제