Как установить стиль кнопок заголовка windows 10 для всех приложений windows с MahApps - PullRequest
1 голос
/ 04 февраля 2020

Я новичок в WPF и использую MahApps. Я хочу установить кнопки стиля Windows 10 на все windows в моем приложении. Я могу сделать это отдельно для каждого окна, добавив

<ma:MetroWindow.WindowButtonCommands>
    <ma:WindowButtonCommands Style="{DynamicResource MahApps.Styles.WindowButtonCommands.Win10}" />
</ma:MetroWindow.WindowButtonCommands>

к каждому окну xaml. Однако я хотел бы установить это как стиль в App.xaml, чтобы мне не приходилось дублировать это в каждом окне. Я пытался

<Application.Resources>
    <ResourceDictionary>
        <Style x:Key="WindowStyle" TargetType="{x:Type ma:MetroWindow}">
            <Setter Property="WindowButtonCommands">
                <Setter.Value>
                    <ma:WindowButtonCommands Style="{DynamicResource MahApps.Styles.WindowButtonCommands.Win10}" />
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Application.Resources>

, но это работает только для первого окна. Последующий windows открыл cra sh с ошибкой «Указанный элемент уже является логическим дочерним элементом другого элемента. Сначала отключите его». По-видимому, создается только один экземпляр WindowButtonCommands и может быть назначен только одному окну. Я не уверен, где go отсюда.

1 Ответ

1 голос
/ 04 февраля 2020

Попробуйте определить элемент WindowButtonCommands как отдельный не общий ресурс:

<Application.Resources>
    <ResourceDictionary>
        <ma:WindowButtonCommands x:Key="commands" x:Shared="False" Style="{DynamicResource MahApps.Styles.WindowButtonCommands.Win10}" />
        <Style x:Key="WindowStyle" TargetType="{x:Type ma:MetroWindow}">
            <Setter Property="WindowButtonCommands" Value="{StaticResource commands}" />
        </Style>
    </ResourceDictionary>
</Application.Resources>
...