Oxyplot引用HandyControl导致Oxyplot的PlotView的Style发生了位移一
最近在使用Oxyplot同时配合HandyControl来在项目中使用,结果发生了意想不到的问题。
首先我使用VS2019打开了官方的Oxyplot的源码里面的测试例子“oxyplot-develop\Source\Examples\WPF\SimpleDemo”,然后在该项目中添加了在官方下载的HandyControl.dll的引用。
接着在SimpleDemo例子的App.xaml中添加了一段代码:
<ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/TF4000.App.GUI.Common;component/Themes/SkinDefault.xaml" /> <ResourceDictionary Source="pack://application:,,,/TF4000.App.GUI.Common;component/Themes/Theme.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>
然后果断F5运行跑起来了,结果出现了以下这样的图形,让我怀疑人生,我只是加了HandyControl的引用,但是没有用到里面任何东西,你为什么要这样对我!!
本来SimpleDemo不添加任何东西跑起来的图形是这样的
这个问题困扰了我好几天,到现在还没解决,但是肯定和HandyControl重写了整个WPF的基本控件有关系,因为在Debug过程中发现尽管我没有用到HandyControl中的任何东西,但是还是会跑到HandyControl中的SimplePanel.MeasureOverride函数和SimplePanel.ArrangeOverride函数中,因此我断定HandyControl做了一些不为人知的事情。
所以我现在有以下几个思路:
1.能不能让Oxyplot和HandyControl关于Themes的使用完全独立,不让Oxyplot的Style受到HandyControl的Style影响。如果有,有什么函数或者属性设置能做到类似这种
[assembly: ThemeInfo( ResourceDictionaryLocation.None, //主题特定资源词典所处位置 //(未在页面中找到资源时使用, //或应用程序资源字典中找到时使用) ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 //(未在页面中找到资源时使用, //、应用程序或任何主题专用资源字典中找到时使用) )]
2.找到HandyControl中如何影响Oxyplot的原因,具体是哪个类,哪个函数影响的。这个也是我目前主要方向
3.能不能用HandyControl中的元素重写Oxyplot的显示控件。
结语:最后后面如果解决了我会再记录下来