我正在构建一个基于MVVM模式的WPF桌面应用程序。
我想显示一些图形,并决定使用旧的ZedGraph库,因为我很熟悉它,目前似乎没有更好的选择(如果有,请评论)
我可以用以下代码将图形控件放在我的视图上:
<WindowsFormsHost>
<zed:ZedGraphControl x:Name="graphControl"/>
</WindowsFormsHost>
然而,我想操作图形控件,设置轴和数据等。坚持MVVM,我不能从ViewModel调用图形控件,我也不想把图形操作放在View的代码后面。
有没有一种方法可以将Graph Control对象放在ViewModel中,在那里操作它,然后仍然让View显示它?
IMO,我认为这是不可能的,因为您使用的底层控件是Windows窗体控件。因此,作为一种变通方法,您可以编写一个自定义WPF控件,它只使用WindowsFormsHost方法包装图形控件
要在WPF窗口中托管ZedGraph,请查看此处的示例。
这很有可能。可以使用"行为"模式来操纵图形。设置可在XAML中用作视图模型绑定的依赖项属性。然后,Behaviors中的代码(依赖属性)充当xaml中绑定和实际控件之间的粘合剂。