Подтвердить что ты не робот

MahApps и Property Grid

Прежде всего, огромное спасибо MahApps. Какой классный проект!

У меня есть существующее приложение, написанное в WPF, к которому я применил библиотеку MahApps. Я использовал этот учебник:

http://mahapps.com/guides/quick-start.html

Однако эффект на Property Grid (Xceed) минимален.

Сопутствующие поля в других окнах выглядят следующим образом:

введите описание изображения здесь

Сочетания сетки свойств по-прежнему выглядят следующим образом (уродливые!):

введите описание изображения здесь

Однако при нажатии на поле со списком отображается правильный стиль MahApps для элементов. Это только сам Combo Box (закрытый), который не является плоским.

введите описание изображения здесь

Мои знания в WPF являются основными. Куда я попытаюсь исправить это? Нужно ли вручную переопределять шаблон со списком в Property Grid?

4b9b3361

Ответ 1

в MainWindow.xaml используйте Controls:MetroWindow

<Controls:MetroWindow x:Name="MainApp" x:Class="AppWin.MainWindow"
                      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                      xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
                      MinHeight="700"
                      MinWidth="1024"
                      >

в MainWindow.xaml.cs Наследование MetroWindow

namespace AppWin
{
    public partial class MainWindow : MetroWindow
    {
  ...

добавить App.xaml следующие настройки

    <Application x:Class="AppWin.App"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:local="clr-namespace:AppWin"
                 StartupUri="MainWindow.xaml">
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
                    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />

/*--change template color for example green.xaml--*/
                    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/red.xaml" />

/*--change template style for example BaseDark.xaml--*/
                    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />

                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </Application>

Ответ 2

Возможно, ваш другой combobox выглядит уродливым, потому что ресурсы MahApps не найдены?

Поместите ресурсы mahapp, которые вы используете, в словарь ресурсов в файле App.xaml, чтобы он был доступен для всех окон. (а не размещать их в ресурсном словаре только в одном окне, т.е. mainwindow.xaml)

App.xaml:

<Application... >
<Application.Resources>
    <ResourceDictionary>
         <!-- My other resources -->
         <!-- ... -->

        <!-- MahApps resources -->
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedSingleRowTabControl.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Ответ 3

Сетка свойств переопределяет стили MahApps. Вы должны создать собственный PropertyEditor для своих свойств. PropertyEditor переопределяет стили сетки свойств.

Я знаю, что это большая работа, но это единственный способ получить представление MahApps.