当我将代码移动到另一个DLL中时,不再调用WPF:OnApplyTemplate

当我将代码移动到另一个DLL中时,不再调用WPF:OnApplyTemplate,wpf,Wpf,让我们试着解释清楚 我有一个作为WPF应用程序构建的自定义控件,它运行良好。我已将所有代码移到外部DLL中。在这一更改之后,当我加载应用程序时,不再调用applytemplate()的方法,,也不会呈现控件 我尝试将Generic.xaml文件放入DLL根目录中的一个主题目录(大写字母T),该DLL在启动项目中具有控件和/或主题目录 如果此信息很重要,我可以在这里找到控件: 项目的设置是 输出类型:类库 目标框架:.Net框架4 我创建了一个简单的DLL项目,并手动添加了引用 你对解决办

让我们试着解释清楚

我有一个作为WPF应用程序构建的自定义控件,它运行良好。我已将所有代码移到外部DLL中。在这一更改之后,当我加载应用程序时,不再调用applytemplate()的方法,也不会呈现控件

  • 我尝试将Generic.xaml文件放入DLL根目录中的一个主题目录(大写字母T),该DLL在启动项目中具有控件和/或主题目录
  • 如果此信息很重要,我可以在这里找到控件:
  • 项目的设置是
    • 输出类型:类库
    • 目标框架:.Net框架4
  • 我创建了一个简单的DLL项目,并手动添加了引用
你对解决办法有什么想法吗


提前感谢…

多亏了多夫,我找到了解决方案

我重新创建了一个新的库,作为WPF自定义控件库,它可以正常工作


重新创建一个新项目有点过分,所以如果有人能向我解释如何重新配置现有项目,那就太好了;)

标准Wpf应用程序和Wpf自定义控件库之间的主要区别在于以下几行代码

[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page, 
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page, 
// app, or any theme specific resource dictionaries)
)]

将这些代码行添加到程序集中应该可以修复您的错误。

什么类型的DLL?您使用了什么样的项目模板?如果必须自己创建Generic.xaml,那么很可能是错误的。尝试使用用户控件或自定义控件库。我还没有弄清楚如何将现有的简单库项目更改为支持WPF的项目。我刚刚创建了一个简单库,并添加了WPF所需的库。我编辑我的帖子以指示这些infoOk,现在删除该项目并使用项目模板中的自定义控件库重试。我在该窗口中遇到了一个类似的问题,即没有调用.NET 4中的应用程序模板-不幸的是,在这种情况下,切换到自定义控件不是一个选项。