我需要在我的ViewModel中引用Visual(XAML视图窗口的一个元素)以使用像VisualTreeHelper.GetDescendantBounds(Visual reference)
这样的VisualTreeHelper方法,但我不想破坏MVVM规则并只命名viewport3d并提供它作为实例化我的ViewModel的参考。
目前我将几何体作为这样的内容绑定到我的ViewModel:
<Viewport3D>
<ModelVisual3D Content="{Binding SceneContent.Content}"/>
</Viewport3D>
但我没有看到MVVM可能将包含ModelVisual3D放入我的ViewModel中。在MVVM应用程序中是否存在标准(可能是数据绑定)方法?
答案 0 :(得分:3)
使用MVVM,我们不&#39;获取视图元素&#39;。如果您需要对UI元素执行某些操作,那么这与MVVM无关。如果你需要使用VisualTreeHelper.GetDescendantBounds
方法,那么再次,这与MVVM完全无关......为什么这么多人声称使用MVVM,但对它一无所知?
因此,您的问题无效。在这种情况下,使用后面的代码是完全合适的。实际上,这是我们在遵循MVVM方法时使用后面的代码时的完美示例。如果它只与UI相关,那么它在视图模型中没有任何意义,所以根本就不要把它放在那里。
请阅读What are MVVM limitations?问题的答案,以进一步了解MVVM。