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

时间:2011-10-13 17:23:01

标签: wpf

让我们试着清楚地解释一下。

我有一个自定义控件构建为WPF应用程序,它工作正常。我已将所有代码移动到外部DLL中。在此更改之后,当我加载应用程序时,方法 OnApplyTemplate()不再被调用,并且控件也不会呈现

  • 我尝试将 Generic.xaml 文件放入DLL的根目录中的 Themes 目录(大写 T )中将控件和/或 Themes 目录放入StartUp项目。
  • 如果此信息非常重要,我会找到控件:http://www.codeproject.com/KB/WPF/WPFOutlookCalendar.aspx
  • 项目的设置是
    • 输出类型:类库
    • 目标框架: .Net Framework 4
  • 我创建了一个简单的DLL项目,并且我手动添加了引用

你对这个解决方案有什么想法吗?

提前致谢...

2 个答案:

答案 0 :(得分:7)

标准Wpf Applicaton和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)
)]

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

答案 1 :(得分:2)

感谢dowhilefor,我找到了解决方案!

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

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