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 속성에 할당 할 수해야하는 이유 내가 오히려 그라데이션 브러시를 사용하려면이 옵션을 확장하려는, 명확하게, 그건. 컬러가 다른 유형이 있기 때문이다
는
내 생각뿐 이었지만, (intellisense를 사용하여) 배경을 보았습니다. (Control에서) 배경색은 실제로 브러시가 아니라 색상입니다. – willem
@willemo, 그게 다예요. 배경은 브러쉬이며 사각형입니다. 채우기는 브러시입니다. SolidColorBrush.Color를 Background 속성으로 설정하면 SolidColorBrush.Color가 Color이고 Background가 Brush이므로 실패합니다. Rectangle.Fill = 배경은 두 가지 브러시 중 하나입니다. – Rich
또는 브러쉬를 색상으로 변환 할 수있는 IValueConverter의 불쾌한 구현을 작성하십시오 ...하지만 당신은 다른 종류의 브러쉬를 처리해야합니다. 브러쉬에 대한 자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us /library/aa970904.aspx – Arcturus