WPF как заставить designer отображать пользовательский стиль окна

Я сделал новый CustomControl на основе окна Control.
Когда я использую свой элемент управления, он не отображается в режиме конструктора, вместо этого он по-прежнему использует стиль окна по умолчанию.
Как я могу заставить дизайнера отображать мой стиль окна вместо стиля по умолчанию?

Мой Файл MainWindow.язык XAML:

<CustomWindow:MetroWindow x:Class="Testz.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:CustomWindow="clr-namespace:MetroWindow;assembly=MetroWindow"
        Title="MainWindow" Height="350" Width="525" BorderBrush="Red">
    <Grid>

    </Grid>
</CustomWindow:MetroWindow>

ссылка на весь мой проект - может быть, вам понадобится

как это выглядит в дизайнере и как это на самом деле выглядит так:

enter image description here

3 ответов


Я думаю, что понял, чего вы пытались достичь.

проблема в том, что конструктор Visual Studio не может найти ресурс, поскольку он находится в библиотеке. Что вам нужно сделать, это создать ResourceDictionary, указывающий на него на вас приложение, чтобы иметь возможность видеть шаблон времени дизайнера.

<Application x:Class="DemoMetroWindow.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:MetroWindow"
             StartupUri="DemoWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:/MetroWindow;component/Themes/Generic.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

вы можете узнать больше из ссылки ниже.

OnApplyTemplate () никогда не вызывается

в WPF сделать тип в Время разработки?

http://blogs.msdn.com/b/jgalasyn/archive/2007/10/29/troubleshooting-wpf-designer-load-failures.aspx

http://blogs.msdn.com/b/jnak/archive/2007/11/08/code-behind-and-the-wpf-designer.aspx


вы используете метро Mahapps, не так ли?

вы можете использовать стили предусмотрены. укладка окна с метро

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.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/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

вы можете изменить цвет окна, изменив словарь ресурсов синего цвета.xaml другими цветами, просто проверьте это.


когда ссылки на ресурсы в приложение.xaml в порядке, вы должны перезапустить Visual Studio. В большинстве случаев темы отображаются правильно.

в отношении