【发布时间】:2020-12-02 20:42:45
【问题描述】:
我已经实现了Wiesław Šoltés'很棒的ZoomBorder,但我在 WPF 和 MVVM 方面有点挣扎。为了问题的完整性,ZoomBorder 是一个继承自Border 的UIElement,并为用户提供了缩放和平移继承边框内容的可能性。它还可以重置缩放和平移。
我想让ZoomBorder 对某个视图模型发布的事件做出反应,以便在发布该事件时,ZoomBorder 重置缩放。在我的实现中,ZoomBorder 的DataContext 是一个ContentViewModel,它有一个通过Autofac 注入的IEventAggregator (Prism.Events)。理想情况下,我希望将事件聚合器直接注入ZoomBorder,以便它可以订阅事件,但我不能,因为构造函数需要是无参数的。
所以ContentViewModel 必须订阅该事件,但我如何从ContentViewModel 调用ZoomBorder 的Reset 方法?我知道我会违反 MVVM,但我不知道该怎么做。我想过让ZoomBorder 通过依赖属性公开Command,但是Reset 代码必须在视图模型上,但它不能。
【问题讨论】:
标签: wpf mvvm dependency-injection prism uielement