WPF如何强制设计者显示自定义窗口样式

Ron*_*Ron 8 wpf xaml designer custom-controls

CustomControl基于Window 制作了一个新的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>
Run Code Online (Sandbox Code Playgroud)

链接到我的整个项目 - 也许你需要它

它在设计师中的外观和外观如何:

在此输入图像描述

Lui*_*ipe 6

我想我明白你想要完成的事情.

问题是Visual Studio Designer无法找到资源,因为它位于库中.您需要做的是在Application上创建一个指向它的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>
Run Code Online (Sandbox Code Playgroud)

您可以从下面的链接中了解更多信息.

永远不会调用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