2017-07-30 101 views
-1

我已经尝试了许多选项很长一段时间,这是我想到的最后一个,所以我会试着问: 我想在WPF中开发一个MVVM项目,我有下载了一个随时可用的WPF控件(GMap.NET)。但是,这个控件不准备在MVVM中使用它,我是一个新手,所以我不想自己修改源代码。该控件需要设置许多参数(不能通过XAML访问,因此我不能简单地绑定它们),并在控件对象上调用一些函数。所以这里去我的问题:全球访问WPF控制

我怎样才能从代码的任何地方访问WPF控件实例,并从那里管理它?

特别是,我想从ViewModel部件访问一个View元素,并且我知道它会使模式刹车,但我不知道如何避免它,并且我的时间不够了。

+0

@PeterDuniho,我的问题错了吗? – Niko

+0

该控件具有很多依赖属性..因此它可以在使用MVVM的XAML中使用。你究竟想要归档哪些是不可能的? – JanDotNet

+0

@JanDotNet,这里是我更具体的问题:https://stackoverflow.com/questions/45152773/mvvm-in-wpf-usercontrols-and-gmap-net 我已经问过这个问题,希望得到更通用的解决方案。 – Niko

回答

2

很难说不知道具体的控制。但总的来说,我看到2个选项做出这样的控制MVVM符合:

  1. 子类的控制,并添加依赖属性,因此它可以在XAML
  2. 被用来创建一个包装的unMVVMable控制一个“容器控件”并提供所需的依赖项属性。

但是,如果控件的API是复杂的并且不仅具有属性,而且还有一些方法,那么可以务实地在这里打破MVVM。 MVVM不是从视图中分离GUI相关逻辑的唯一方法。例如,您可以使用接口抽象使用的函数,并使用视图模型中的接口。

+0

“不知道具体的控制” - 就像我在问题中写到的那样:GMap.NET “你可以用一个接口抽象使用的函数,并在你的视图模型中使用接口。” - 你能更具体吗? – Niko

+0

您编写了“GMap.NET”...但是快速搜索只显示带有该名称的WinForms控件。你的意思是那个吗?我链接到具体的控制有帮助:)。 – JanDotNet

+0

还有一个WPF:https://greatmaps.codeplex.com/ // https://github.com/radioman/greatmaps/tree/master/GMap.NET.WindowsPresentation – Niko