全局访问WPF控件
Global access to WPF control
我已经尝试了很长时间的多种选择,这是我想到的最后一个,所以我会试着问:
我正在尝试在 WPF 中开发一个 MVVM 项目,并且我已经下载了一个随时可用的 WPF 控件 (GMap.NET)。但是,这个控件不准备在 MVVM 中使用它,我是这方面的新手,所以我不想自己修改源代码。控件需要设置很多参数(无法通过XAML访问,所以我不能简单地绑定它们),并在控件对象上调用一些函数。所以这是我的问题:
如何从代码的任何位置访问 WPF 控件实例并从那里管理它?
特别是,我想从 ViewModel 部分访问一个 View 元素,我知道它会破坏模式,但我不知道如何避免它,我 运行 没时间了。
不知道具体的控件就不好说了。但总的来说,我看到有 2 个选项可以让这样的控件符合 MVVM:
- 子类化控件并添加依赖属性,以便它可以在 XAML
中使用
- 创建一个 "container control" 包装 unMVVMable 控件并提供所需的依赖属性。
但是,如果控件的 API 很复杂,不仅有属性,还有一些方法,实用的做法是在这里打破 MVVM。 MVVM 并不是将 GUI 相关逻辑与视图分离的唯一方法。例如,您可以使用接口抽象使用的函数,并在您的视图模型中使用该接口。
我已经尝试了很长时间的多种选择,这是我想到的最后一个,所以我会试着问: 我正在尝试在 WPF 中开发一个 MVVM 项目,并且我已经下载了一个随时可用的 WPF 控件 (GMap.NET)。但是,这个控件不准备在 MVVM 中使用它,我是这方面的新手,所以我不想自己修改源代码。控件需要设置很多参数(无法通过XAML访问,所以我不能简单地绑定它们),并在控件对象上调用一些函数。所以这是我的问题:
如何从代码的任何位置访问 WPF 控件实例并从那里管理它?
特别是,我想从 ViewModel 部分访问一个 View 元素,我知道它会破坏模式,但我不知道如何避免它,我 运行 没时间了。
不知道具体的控件就不好说了。但总的来说,我看到有 2 个选项可以让这样的控件符合 MVVM:
- 子类化控件并添加依赖属性,以便它可以在 XAML 中使用
- 创建一个 "container control" 包装 unMVVMable 控件并提供所需的依赖属性。
但是,如果控件的 API 很复杂,不仅有属性,还有一些方法,实用的做法是在这里打破 MVVM。 MVVM 并不是将 GUI 相关逻辑与视图分离的唯一方法。例如,您可以使用接口抽象使用的函数,并在您的视图模型中使用该接口。