Использование Orchestra Mahapps Shell в сочетании с Material Design - PullRequest
0 голосов
/ 04 августа 2020

В настоящее время я нахожу альтернативу MVVM Framework для существующего приложения, которое построено на MaterialDesignInXamlToolkit в сочетании с Mahapps.Metro (в основном используется для windows). В процессе я наткнулся на Catel и перестроился на этот Orchestra , который включает оболочку, созданную для MahApps.Metro . Пока все хорошо, все работает. Но затем я хотел применить внешний вид Materialdesign к приложению, как я всегда это делаю:

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml"/>
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml"/>

        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml"/>

        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.MahApps;component/Themes/MaterialDesignTheme.MahApps.Defaults.xaml"/>

        <materialDesignMahApps:MahAppsCustomColorTheme BaseTheme="Dark" PrimaryColor="Orange" SecondaryColor="Gray" />
        
    </ResourceDictionary.MergedDictionaries>

Внедрение этих словарей в систему стилей (обычно выполняется в App.xaml) обычно обновляет стиль все приложение. Насколько я мог заметить, это сработало, по крайней мере, в дизайнере, но как только я запускаю приложение, стиль Mahapps применяется снова. На данный момент я узнал, что это происходит потому, что Orchestra вводит новый стиль в систему после запуска.

Поэтому я попытался добавить стиль непосредственно в Views / Windows (Generic.xaml содержит тот же код, что и описано выше):

    <catel:DataWindow.Resources>
        <ResourceDictionary Source="../Themes/Generic.xaml"/>
    </catel:DataWindow.Resources>

Это сработало частично, но не так, как предполагалось. Стиль был применен к базовым c элементам управления, но окно и компоновка были искажены.

Наконец, я взглянул на источники оркестра, но не смог найти, где происходит инъекция, и я не смог получить полезную информацию в документации. Итак, мой вопрос: есть ли способ применить собственный стиль поверх оболочки Orchestra Mahapps?

...