C# 访问WPF UserControl子元素属性

C# 访问WPF UserControl子元素属性,c#,wpf,xaml,user-controls,C#,Wpf,Xaml,User Controls,假设我有一个UserControl和几个子控件 <UserControl x:Class="Any.AnyControl" <Grid> <Label Name="label1" Background="Black" /> ... more controls here </Grid> </UserControl> 尝试这样做(尽管在父控件中设置控件样式不是最佳做法): UserContro

假设我有一个UserControl和几个子控件

<UserControl x:Class="Any.AnyControl"
    <Grid>
        <Label Name="label1" Background="Black" />
        ... more controls here  
    </Grid>
</UserControl>
尝试这样做(尽管在父控件中设置控件样式不是最佳做法):


UserControl应该公开一个属性,例如
LabelBackground
,标签的背景像
一样绑定到该属性,谢谢您的回复。我仍然不知道如何在父XAML中以这种方式访问。请给我举个例子好吗?比如
。LabelBackground应该是AnyControl中的依赖属性,如重复问题中所示。我复制粘贴了您的代码,但它对我不起作用,说“属性'LabelBackground'在XML命名空间中不存在…”当然,您首先必须将其添加到UserControl的类声明中。感谢您的回复。是的,这应该行得通,但我认为它太复杂了,所以最好在“代码隐藏”中用一行代码修改该属性。我知道,你是对的,这就是为什么我将你的答案设置为“答案”。谢谢,请记住,如果将样式控件拆分为xaml文件和隐藏的代码,那么维护起来会非常困难。在大多数情况下,最好将代码保留在一个位置,即使它占用了更多的空间,尤其是在xaml中进行样式设置时,这与调试器不太匹配(这意味着它基本上根本不起作用)。另外,你还没有把我的回答作为回答。谢谢你进一步的建议。我把你的答案设为答案,但我需要有15分或什么才能公开展示我的投票,对不起。我是新来的
<Window>
    <Grid>
         <local:AnyControl/>
         // I want to access AnyControl label1 Background property here 
    </Grid>
</Window>
<local:AlertControl LabelBackground="Blue">                           
  <Label Background="{Binding LabelBackground, RelativeSource={RelativeSource AncestorType=UserControl}}" />
<Label Background="{Binding LabelBackground, RelativeSource={RelativeSource AncestorType=local:AlertControl}}" />
<local:AnyControl>
    <local:AnyControl.Resources>
        <Style TargetType="{x:Type Label}">
            <Setter Property="Background" Value="Red" />
        </Style>
    </local:AnyControl.Resources>
</local:AnyControl>
<local:AnyControl>
    <local:AnyControl.Resources>
        <Style TargetType="{x:Type Label}">
            <Style.Triggers>
                <Trigger Property="Name" Value="Test">
                    <Setter Property="Background" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </local:AnyControl.Resources>
</local:AnyControl>