访问WPF用户控件的子元素属性
问题描述:
比方说,我有几个孩子一个用户控件控制访问WPF用户控件的子元素属性
<UserControl x:Class="Any.AnyControl"
<Grid>
<Label Name="label1" Background="Black" />
... more controls here
</Grid>
</UserControl>
我用它在主窗口,如下所示:
<Window>
<Grid>
<local:AnyControl/>
// I want to access AnyControl label1 Background property here
</Grid>
</Window>
我知道我可以访问AnyControl LABEL1代码隐藏背景属性,但有什么办法可以在父XAML中访问它吗?
我现在的代码: 父XAML
<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>
它为UserControl中给定类型的所有控件设置背景属性。如果你想改变它的名称选择的控制,你可以做这样的事情(变更Value="Test"
到您的控件的名称):
<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>
的用户控件应该公开的属性,比如'LabelBackground',对此标签的背景被绑定为'
感谢您的回复。我仍然不知道如何在父XAML中以这种方式访问。请,你能举个例子吗? – hkhk
像''。 LabelBackground应该是AnyControl中的依赖项属性,如重复问题所示。 –
Clemens