WPF将样式应用于用户控件的子控件

时间:2016-05-20 21:14:24

标签: wpf templates styles

我有一个WPF用户控件,里面有几个标签(动态创建)。我想从我的用户控件中设置这些标签的样式(每个标签应该具有相同的样式)。

因此,简单来说,设置用户控件的样式应该将该样式应用于其所有标签。

2 个答案:

答案 0 :(得分:2)

可以在UserControl Resources中声明Label的样式,并将Setters值绑定到UserControl属性,例如:

<UserControl x:Class="WpfApplication3.UserControl1"
             x:Name="Uc1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <UserControl.Resources>
        <Style TargetType="Label">
            <Setter Property="Foreground"
                    Value="{Binding Foreground, ElementName=Uc1, Mode=OneWay}"/>
        </Style>
    </UserControl.Resources>

    <Grid>            
        <Label Content="123"/>
    </Grid>
</UserControl>

这样更改UserControl Foreground会影响所有标签内部(如果他们不覆盖前景设置)

样式可以使用类型名称(Label)作为键,默认情况下将应用。或者它可以有一些其他密钥,应该明确分配给动态创建的标签

答案 1 :(得分:1)

在UserControl.Resources中,您可以设置如下内容:

<Style TargetType="Label">
     <Setter Property="Foreground" Value="#112233" />
</Style>

只要您不给样式添加x:Key元素,它就会应用于UserControl中的所有子标签。