在XAML中按名称设置usercontrol child的样式?

时间:2017-06-23 08:11:28

标签: c# wpf xaml user-controls

我在stackoverflow中看到了以下代码:

   <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="Label 1"/>
            <Label Content="Label 2"/>
        </Grid>
    </UserControl>

问题:我现在想知道我是否可以在usercontrol.resources中定位特定标签以进行样式设置。是否可以在我的userControl中?如果是,那怎么样?

1 个答案:

答案 0 :(得分:1)

没有Key的样式将应用于范围内的所有目标类型实例。

将样式设为Key,例如

<Style TargetType="Label" x:Key="MyLabel">

然后使用Key

<Label Content="Label 1" Style="{StaticResource MyLabel}" />

<!--Will not apply the style to Label 2-->
<Label Content="Label 2"/> 

修改

我再次阅读了您的问题,似乎您想从Target引用Style,而不是Style引用Target。是对的吗?它听起来像 unnatural ,就像想要从基类知道派生类的实例的名称。