Стиль пользовательского элемента управления WPF - Как установить стиль из родительского элемента, если элемент управления находится во внешней сборке? - PullRequest
7 голосов
/ 10 марта 2011

По сути, у меня следующая структура:

<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 ]

5 голосов
/ 10 марта 2011

Если вы хотите, чтобы стиль был применен ко всем TextBlock с, в том числе в MyUserControl, просто оставьте ключ x: выключенным, и он будет применен неявно

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

Если вы хотите, чтобы он был установлен явно, вы можете использовать DynamicResource в UserControl s

<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>
0 голосов
/ 10 марта 2011

Попробуйте:

<TextBlock Style={ StaticResource MyStyle1} />

Надеюсь, это поможет вам Введение в стили в WPF

...