WPF UserControl Style - PullRequest
       14

WPF UserControl Style

5 голосов
/ 11 марта 2009

Я хочу установить свойство background всех пользовательских элементов управления моего проекта.

Я пытался с

<style TargetType={x:Type UserControl}>
    <setter property="Background" Value="Red" />
</style>

Он компилируется, но не работает.

¿Есть идея? Спасибо!

Ответы [ 2 ]

22 голосов
/ 11 марта 2009

Вы можете установить стиль только для определенного класса, так что это будет работать (создайте объект UserControl, не очень полезный):

<Window.Resources>
    <Style TargetType="{x:Type UserControl}">
        <Setter Property="Background" Value="Red" />
    </Style>
</Window.Resources>
<Grid>
    <UserControl Name="control" Content="content"></UserControl>
</Grid>

Но это не так (Создать класс, производный от UserControl):

<Window.Resources>
    <Style TargetType="{x:Type UserControl}">
        <Setter Property="Background" Value="Red" />
    </Style>
</Window.Resources>
<Grid>
    <l:MyUserControl Name="control" Content="content"></l:MyUserControl>
</Grid>

То, что вы можете сделать, это либо явно установить стиль, используя свойство Style:

<Window.Resources>
    <Style TargetType="{x:Type UserControl}" x:Key="UCStyle">
        <Setter Property="Background" Value="Red" />
    </Style>
</Window.Resources>
<Grid>
    <l:MyUserControl Name="control" Content="content" Style="{StaticResource UCStyle}"></l:MyUserControl>
</Grid>

или создать стиль для каждого производного класса, вы можете использовать BasedOn, чтобы избежать дублирования содержимого стиля:

<Window.Resources>
    <Style TargetType="{x:Type UserControl}" x:Key="UCStyle">
        <Setter Property="Background" Value="Red" />
    </Style>
    <Style TargetType="{x:Type l:MyUserControl}" BasedOn="{StaticResource UCStyle}" />
</Window.Resources>
<Grid>
    <l:MyUserControl Name="control" Content="content"></l:MyUserControl>
</Grid>
2 голосов
/ 11 марта 2009

Я думаю, вам не хватает двойных кавычек:

Попробуйте это:

<Window.Resources>
    <Style TargetType="{x:Type UserControl}">
        <Setter Property="Background" Value="Red" />
    </Style>
</Window.Resources>
<Grid>
    <UserControl Name="control" Content="content"></UserControl>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...