WPF - Почему эти стили не работают? - PullRequest
0 голосов
/ 28 ноября 2010

Я пытаюсь установить глобальный стиль для нескольких производных типов элементов управления, поместив это в мой app.xaml:

<Style TargetType="{x:Type Control}">
    <Setter Property="Background" Value="{Binding BackgroundBrush, Source={x:Static m:Settings.Instance}, UpdateSourceTrigger=PropertyChanged}" />
    <Setter Property="Foreground" Value="{Binding ForegroundBrush, Source={x:Static m:Settings.Instance}, UpdateSourceTrigger=PropertyChanged}" />
    <Setter Property="BorderBrush" Value="{Binding ForegroundBrush, Source={x:Static m:Settings.Instance}, UpdateSourceTrigger=PropertyChanged}" />
    <Setter Property="UseLayoutRounding" Value="True" />
</Style>

<Style TargetType="{x:Type Window}" BasedOn="{StaticResource {x:Type Control}}" />

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Control}}" />

В настоящее время стиль окна работает только в окне визуального дизайна студии, а стиль кнопок не работает вообще. Что я сделал не так?

1 Ответ

1 голос
/ 28 ноября 2010

Я иногда обнаруживал, что BasedOn довольно специфичен.Если вы назначите ключ, то он будет работать чаще.Я не уверен, что привязки значений вызывают вашу проблему, поскольку я не создавал и использовал внешний статический класс.

<Grid.Resources>
    <Style x:Key="simpleStyle" TargetType="{x:Type Control}">
        <Setter Property="Background" Value="Blue" />
        <Setter Property="Foreground" Value="Yellow" />
        <Setter Property="BorderBrush" Value="CornflowerBlue" />
    </Style>

    <Style TargetType="{x:Type Control}" BasedOn="{StaticResource simpleStyle}" />

        <Style TargetType="{x:Type Window}" BasedOn="{StaticResource simpleStyle}" />

    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource simpleStyle}" />
</Grid.Resources>
<Button Height="50" Width="100">
    Hello
</Button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...