【发布时间】:2018-09-29 01:30:15
【问题描述】:
我想创建一个自定义超链接控件,当单击该控件时,它会导航到由绑定到父 ViewModel 中的属性指定的区域和参数。由于我希望能够将此控件放入任意 xaml 中,因此它不能拥有自己的 ViewModel 或模块管理器,这通常是获取区域管理器的方式。
有没有办法在代码隐藏中获取RegionManager 对象,而不必将其注入到 ViewModel 中?我看到RegionManager 类上有一个静态的GetRegionManager() 方法,但是它需要一个我不明白如何使用的依赖属性参数。
为什么我想在代码隐藏中这样做:
虽然我当然可以提供允许将RegionManager 对象注入 ViewModel 的构造函数,但我希望我的新 Hyperlink 控件比这更自包含和独立。以这种方式涉及 ViewModel 意味着导航将在 ViewModel 中进行,而不是在新的 Hyperlink 控件中进行,这有点违背了拥有自包含 Hyperlink 控件的目的。
【问题讨论】:
-
请注意,RegionManager 是一个attached property。静态 GetRegionManager 方法是对应的属性获取访问器。
-
是的,但我不知道它接受的 DependencyProperty 参数是什么。我只是通过它
this? -
我不知道
this在你的情况下是什么。但是,这并不重要,因为如果之前已在目标元素(通过 SetRegionManager 或在 XAML 中)设置了非空值,则只会获得非空值。我没有使用 Prism 的经验,但我很确定这种方法不是您想要的。