对于我的生活,我似乎无法弄清楚设置ContentControl的背景颜色这个简单的任务:
<ContentControl x:Name="Content03"
Width="130"
Height="130"
Canvas.Top="50"
Canvas.Left="400"
Background="Yellow">
<Ellipse Fill="YellowGreen" IsHitTestVisible="True">
</Ellipse>
</ContentControl>
还尝试使用样式执行此操作但仍然无效;(
答案 0 :(得分:6)
ContentControl本身没有视觉效果,但它是子控件的容器。在这个控件上设置一些属性(比如fontsize等)通常只是让这些属性沿着可视化树传播的一种方式,所以它们可以被子控件(支持它的那些)接收。
最好的办法是:
<ContentControl x:Name="Content03"
Width="130"
Height="130"
Canvas.Top="50"
Canvas.Left="400">
<Grid Background="Yellow">
<Ellipse Fill="YellowGreen" IsHitTestVisible="True">
</Ellipse>
</Grid>
</ContentControl>
答案 1 :(得分:1)
如果您不必坚持使用ContentControl,我建议使用Border。
当我遇到同样的问题时,Border具有相同的Child属性,我只需要一个孩子,并通过不同对象的代码轻松切换它。 Border正确使用像背景这样的属性。如果Child为null,那些属性也可以工作。
<Border x:Name = "Content03"
Width = "130"
Height = "130"
Canvas.Top = "50"
Canvas.Left = "400"
Background = "Yellow">
<Ellipse
Fill = "YellowGreen"
IsHitTestVisible = "True">
</Ellipse>
</Border>
答案 2 :(得分:0)
我知道这已经过时但您也可以在样式中更改ContentControl的模板。对于某些事情来说这可能有些过分,但在这种情况下,它实际上只是将一个ContentPresenter包装在一个Border和一些模板绑定中:
<Style TargetType="ContentControl" x:Key="StPortal">
<Setter Property="Background" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这使您能够设置边框具有的背景等属性,并且可以设置ContentControl具有的字体系列和大小等内容,而Border则不... ...