【发布时间】:2016-09-18 06:22:58
【问题描述】:
我有一个 WPF 用户控件,其中包含多个标签(动态创建)。我想从我的用户控件中设置这些标签的样式(每个标签都应该具有相同的样式)。
所以简单来说,设置用户控件的样式应该将该样式应用于其所有标签。
【问题讨论】:
我有一个 WPF 用户控件,其中包含多个标签(动态创建)。我想从我的用户控件中设置这些标签的样式(每个标签都应该具有相同的样式)。
所以简单来说,设置用户控件的样式应该将该样式应用于其所有标签。
【问题讨论】:
可以在 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) 作为键,默认情况下会应用。或者它可以有一些其他的键,应该明确分配给动态创建的标签
【讨论】:
在 UserControl.Resources 中,您可以设置如下内容:
<Style TargetType="Label">
<Setter Property="Foreground" Value="#112233" />
</Style>
只要您不给样式一个 x:Key 元素,那么它将应用于您的 UserControl 中的所有子标签。
【讨论】: