【问题标题】:WPF Designer Failing to Load Generic.xamlWPF 设计器无法加载 Generic.xaml
【发布时间】:2023-03-15 00:59:01
【问题描述】:

我写了一个 WPF 类库。它在项目的主题文件夹下有一个 Generic.xaml 文件,在 AssemblyInfo.cs 文件中还有一个 ThemeInfo 属性:

[assembly: ThemeInfo(
    ResourceDictionaryLocation.None, 
    ResourceDictionaryLocation.SourceAssembly)]

一切都很好,除了在设计器中。在我使用 StaticResource 来引用我的画笔、样式和其他资源的任何地方,我都会看到蓝色波浪线:

找不到资源“[资源名称]”。

我真的希望设计人员能够选择我的 Generic.xaml 文件并显示控件按照我设置的样式。我怎样才能做到这一点?

更新

我已将 Yogesh 的答案标记为正确,但这里有更多信息。我在 App.xaml 文件的构造函数中添加了资源字典,而不是在 xaml 中。 XAML 设计器似乎没有执行 App.xaml 文件背后的代码。

【问题讨论】:

  • 如果您想使用Generic.xaml,请使用CustomControl 库。类库没有像App.xaml这样的文件。
  • 它不是具有 App.xaml 的 WPF 应用程序项目。我正在使用 WPF UserControl 库(它只是一个具有 ThemeInfo 属性的类库)和 Themes 文件夹下的 Generic.xaml 文件。然后,我在另一个 WPF 应用程序项目中从 App.xaml 引用这个 Generic.xaml 文件。
  • @RehanSaeed 你能提供一个导致错误的最小包吗?

标签: c# .net wpf xaml designer


【解决方案1】:

只需添加一个名为App.xaml 的新页面,并将Application 作为类库中的根元素,并将Build Action 设置为Page。现在将 generic.xaml 文件添加为资源字典。像这样的……

<Application x:Class="[YourNamespace].App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="[AbsoluteOrRelativePath]/Generic.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

完成此操作后,重新构建您的项目,关闭所有 xaml 视图并再次重新打开它们。这应该可以解决您在 VS2012/2013 和 Blend 2012 中的问题。

【讨论】:

  • 我已经有了。正如我所说,我的 xaml 在运行时运行良好。只是设计师失败了。
  • @RehanSaeed 那么,如果它对您没有帮助,您为什么要接受它作为答案呢?
  • 因为这是添加资源字典的正确方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2011-10-16
  • 1970-01-01
  • 2014-05-23
  • 2021-12-19
  • 2017-05-04
  • 2011-08-27
相关资源
最近更新 更多