在不破坏MVVM的情况下获取XAML View元素

时间:2014-07-01 15:58:36

标签: wpf xaml mvvm

我需要在我的ViewModel中引用Visual(XAML视图窗口的一个元素)以使用像VisualTreeHelper.GetDescendantBounds(Visual reference)这样的VisualTreeHelper方法,但我不想破坏MVVM规则并只命名viewport3d并提供它作为实例化我的ViewModel的参考。

目前我将几何体作为这样的内容绑定到我的ViewModel:

<Viewport3D>
     <ModelVisual3D Content="{Binding SceneContent.Content}"/>
</Viewport3D>

但我没有看到MVVM可能将包含ModelVisual3D放入我的ViewModel中。在MVVM应用程序中是否存在标准(可能是数据绑定)方法?

1 个答案:

答案 0 :(得分:3)

使用MVVM,我们&#39;获取视图元素&#39;。如果您需要对UI元素执行某些操作,那么这与MVVM无关。如果你需要使用VisualTreeHelper.GetDescendantBounds方法,那么再次,这与MVVM完全无关......为什么这么多人声称使用MVVM,但对它一无所知?

因此,您的问题无效。在这种情况下,使用后面的代码是完全合适的。实际上,这是我们在遵循MVVM方法时使用后面的代码时的完美示例。如果它只与UI相关,那么它在视图模型中没有任何意义,所以根本就不要把它放在那里。

请阅读What are MVVM limitations?问题的答案,以进一步了解MVVM。

相关问题