如何更改子控件xaml的背景颜色

时间:2016-04-07 13:05:40

标签: wpf xaml wpf-controls

我有一个usercontrol,其中包含Canvas中的椭圆。我在另一个窗口中使用此控件,当我设置背景颜色时,我想只更改ellipse的背景。如何更改椭圆(子)背景而不更改画布(父)背景颜色?

1 个答案:

答案 0 :(得分:2)

<强> 1。将DependencyProperty添加到MyUserControl

的代码隐藏中

请注意,Register方法的第3个参数是Type

UserControl名称。
    public Brush EllipseFill
    {
        get { return (Brush)GetValue(EllipseFillProperty); }
        set { SetValue(EllipseFillProperty, value); }
    }

    public static readonly DependencyProperty EllipseFillProperty =
        DependencyProperty.Register("EllipseFill", typeof(Brush), typeof(MyUserControl), new PropertyMetadata(null));

<强> 2。为定义Window的命名空间添加对主UserControlMyUserControl的xaml文件的引用:

xmlns:local="clr-namespace:WpfApplication1"

第3。将Fill的{​​{1}}属性绑定到Ellipse上定义的依赖项属性。

请注意在MyUserControl绑定的MyUserControl参数中使用AncestorType

RelativeSource

<强> 4。在主<Viewbox> <Canvas Width="100" Height="100"> <Ellipse Width="50" Height="20" Canvas.Top="50" Canvas.Left="50" Fill="{Binding Path=EllipseFill, RelativeSource= {RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MyUserControl}}}" /> <Rectangle Width="20" Height="40" Canvas.Top="10" Canvas.Left="10" Fill="Blue" /> </Canvas> </Viewbox>

中的EllipseFill上设置MyUserControl属性
Window