我目前正在尝试在Windows窗体应用程序内部为WPF使用sankey图库(Here)(因为我找不到Windows窗体的sankey图)。
经过一些研究,我发现您可以通过创建WPF控件库,然后在Windows窗体(Here)上使用该控件来做到这一点。
为了测试这一点,我创建了两个项目。一个是Windows窗体应用程序,另一个是WPFControlLibrary。 WPFControlLibrary引用了sankey git库。
当我尝试将控件添加到Windows窗体应用程序内部的窗体中时,出现以下错误:
我相信这是WPFControl库内部的代码(与示例项目类:sankey github库中的mainViewModel.cs内部的代码相同):
sankeyLabelStyle1 = (Style)Application.Current.FindResource("SankeyLabelStyle1");
sankeyLabelStyle2 = (Style)Application.Current.FindResource("SankeyLabelStyle2");
sankeyToolTipTemplate1 = (ControlTemplate)Application.Current.FindResource("SankeyToolTipTemplate1");
sankeyToolTipTemplate2 = (ControlTemplate)Application.Current.FindResource("SankeyToolTipTemplate2");
所以我认为问题是:当我将控件拖放到窗体上时,将调用函数“ Application.Current”,并返回窗体应用程序而不是WPFControlLibrary应用程序。由于表单应用程序没有WPF资源,因此会引发此错误。
为了测试这个想法,我尝试将app.config中的资源从WPFControlLibrary复制到Winform库,但是出现以下错误:
"An unhandled exception of type 'System.TypeInitializationException' occurred in WindowsFormsIntegration.dll
Additional information: The type initializer for 'System.Windows.Forms.Integration.AvalonAdapter' threw an exception."
我不是专家,所以我一直在尝试尽可能多地阅读。我阅读/研究的任何可能的链接将不胜感激。
问题:如何解决以上错误?如果提出了另一种更容易/更好的工作方法/思想,以将Sankey图合并到窗口表单中,我也将接受。
更新为发布:尝试将WPFControlLibrary中的配置资源复制到Winforms时,没有出现相同的错误。我已更新错误。