WPF UserControl样式 - 如果控件位于外部程序集中,如何从父项设置样式?

时间:2011-03-10 17:16:24

标签: wpf user-controls resources styles

基本上我有以下结构:

<Window ...
        xmlns:my="http://schemas.company.com/WPF/Controls"
        >
    <Window.Resources>
        <Style x:Key="MyStyle1" TargetType={x:Type TextBlock}>
            ...
        </Style>
    </Window.Resources>
    <Grid x:Name="LayoutRoot">
        <my:MyUserControl1 />
        <my:MyUserControl1 />
        <my:MyUserControl2 />
        <my:MyUserControl2 />
    </Grid>
</Window>

<UserControl ...
             >
    <TextBlock Style={ ?? What Goes Here ??} />
</UserControl>

<小时/> 如何应用在Window资源中声明的样式,以便它转到从外部程序集中提取的UserControl?

2 个答案:

答案 0 :(得分:5)

如果您希望将样式应用于所有TextBlock,包括MyUserControl中的样式,只需将x:键保留,并将隐式应用

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" Value="Green"/>
</Style>

如果您希望明确设置,可以在DynamicResource中使用UserControl

<Window.Resources>
    <Style x:Key="MyStyle1" TargetType="{x:Type TextBlock}">
        <Setter Property="Foreground" Value="Green"/>
    </Style>
</Window.Resources>
<StackPanel>
    <my:UserControl1 />
    <my:UserControl1 />
    <my:UserControl1 />
    <my:UserControl1 />
</StackPanel>

<UserControl ...>
    <TextBlock Style="{DynamicResource MyStyle1}" Text="TextBlock"/>
</UserControl>

答案 1 :(得分:0)

试试这个:

<TextBlock Style={ StaticResource MyStyle1} />

我希望这可以帮助你Introduction to Styles in WPF