Как изменить стиль кнопки по умолчанию, не возвращая WPF из Aero в Classic?

Я добавил PresentationFramework.Aero в свои объединенные словари App.xaml, как в ...

<Application
    x:Class="TestApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary
                    Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" />
                <ResourceDictionary
                     Source="pack://application:,,,/WPFToolkit;component/Themes/Aero.NormalColor.xaml" />
                <ResourceDictionary
                    Source="/CommonLibraryWpf;component/ResourceDictionaries/ButtonResourceDictionary.xaml" />
                    <!-- Note, ButtonResourceDictionary.xaml is defined in an external class library-->
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Я пытаюсь немного изменить вид кнопок по умолчанию. Я поместил этот стиль в мой ButtonResourceDictionary:

<Style TargetType="Button">
    <Setter Property="Padding" Value="3" />
    <Setter Property="FontWeight" Value="Bold" />
</Style>

Все кнопки теперь имеют правильный отступ и жирный текст, но они выглядят как «Классический», а не «Аэро». Как мне исправить этот стиль, чтобы все мои кнопки выглядели Aero, но также имели эти незначительные изменения? Я бы предпочел не устанавливатьStyle свойство для каждой кнопки.

Обновить

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

<Style BasedOn="{StaticResource {x:Type Button}}" TargetType="{x:Type Button}">
    <Setter Property="Padding" Value="3" />
    <Setter Property="FontWeight" Value="Bold" />
</Style>

Обычно это работает, но не с объединенными словарями Aero. Если я закомментирую эти словари, исключение исчезнет.

Обновление 2

Если я добавлюx:Key атрибут и вручную установить стиль, он работает правильно (стиль Aero с отступами и полужирным шрифтом), но, как я уже сказал, я бы предпочел, чтобы стиль автоматически применялся глобально ко всем кнопкам.

Обновление 3

Я только что обнаружил новую морщину. В моем приложении ButtonResourceDictionary.xaml помещается в библиотеку классов (т. Е. Во внешний проект). Если я переместить этот файл в локальную папку, все работает нормально. Таким образом, проблема заключается в плохом взаимодействии, вызванном ссылками на различные словари внешних ресурсов. Я исправляю свой фрагмент кода App.xaml (выше), чтобы отразить, что ButtonResourceDictionary на самом деле определен внешне.

Ответы на вопрос(0)

Ваш ответ на вопрос