【问题标题】:WPF Apply Style to Child Controls of a user controlWPF 将样式应用于用户控件的子控件
【发布时间】:2016-09-18 06:22:58
【问题描述】:

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

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

【问题讨论】:

    标签: wpf templates styles


    【解决方案1】:

    可以在 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 将影响里面的所有标签(如果它们不覆盖 Foreground 设置)

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

    【讨论】:

      【解决方案2】:

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

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

      只要您不给样式一个 x:Key 元素,那么它将应用于您的 UserControl 中的所有子标签。

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 2023-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-11
        • 2016-07-05
        • 1970-01-01
        • 2011-01-29
        相关资源
        最近更新 更多