当App.xaml在不同的程序集中时,Visual Studio 2012 XAML设计器没有显示正确的内容

Har*_*y13 5 c# wpf xaml xaml-designer visual-studio-2012

我正在将VSF中的WPF应用程序移动到VS 2012.

我有一个主要的可执行文件,其中包含App.xaml和一个单独的类库,用于所有WPF内容.在VS2012(SP3)中,XAML设计器没有显示在App.xaml中定义的MergedResourceDictionary中的任何样式,VS 2010确实......

出于测试目的,我将App.xaml移动到了我的类库.之后,VS 2012设计师正确地展示了一切.

由于类库不能包含App.xaml,因此这不是一个解决方案.

有任何想法吗?

我的App.xaml如下所示:

<Application x:Class="MyApplication.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Startup="AppStartup">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/OtherAssemblyName;component/Resources/Resource1.xaml" />
            <ResourceDictionary Source="pack://application:,,,/OtherAssemblyName;component/Resources/Resource2.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

Dax*_*dhi 0

知道这是一个老问题,但为将来可能面临类似问题的任何人回答这个问题。

完成此操作的最安全方法是创建一个新的 ResourceDictionary 文件,并在其中添加 MergedResourceDictionaries。

然后在您的用户控件/页面/窗口中引用该 ResourceDictionary - 所有这些,因为

<UserControl.Resources>
    <ResourceDictionary Source="GlobalResources.xaml" />
<UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)