4

对于我的生活,我似乎无法弄清楚设置 ContentControl 的背景颜色的这个简单任务:

<ContentControl x:Name="Content03"
            Width="130"
            Height="130"
            Canvas.Top="50"
            Canvas.Left="400"
            Background="Yellow">
        <Ellipse Fill="YellowGreen" IsHitTestVisible="True">
        </Ellipse>
    </ContentControl>

也尝试使用样式来执行此操作,但仍然不起作用;(

4

3 回答 3

9

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>
于 2013-04-26T10:51:45.670 回答
2

如果您不必坚持使用 ContentControl,我建议您改用 Border。

当我遇到同样的问题时,Border 具有相同的 Child 属性,我只需要一个孩子并通过代码轻松切换它与不同的对象。边框正确使用背景等属性。如果 Child 为空,这些属性也可以工作。

<Border x:Name      = "Content03"
        Width       = "130"
        Height      = "130"
        Canvas.Top  = "50"
        Canvas.Left = "400"
        Background  = "Yellow">

    <Ellipse 
        Fill             = "YellowGreen" 
        IsHitTestVisible = "True">
    </Ellipse>

</Border>
于 2015-06-05T14:42:18.067 回答
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 没有...

于 2018-03-22T05:55:21.337 回答