在不破坏MVVM的情况下获得XAML视图元素



我需要在我的ViewModel中引用一个Visual (XAML视图窗口的一个元素)与VisualTreeHelper方法(如VisualTreeHelper.GetDescendantBounds(Visual reference))一起工作,但我不想打破MVVM规则,只是命名viewport3d,并在实例化我的ViewModel时将其作为参考。

目前我将几何图形作为内容绑定到我的ViewModel:

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

但我没有看到MVVM的可能性得到包含ModelVisual3D到我的ViewModel。在MVVM应用程序中是否有标准(可能是数据绑定)方法来解决这个问题?

使用MVVM,我们 '获取视图元素'。如果你需要对UI元素做一些事情,那么这与MVVM无关。如果您需要使用VisualTreeHelper.GetDescendantBounds方法,那么再一次,这绝对与MVVM无关…为什么有那么多人声称要使用MVVM,但对它一无所知?

因此,你的问题无效。在这种情况下,使用后面的代码是完全合适的。事实上,这是一个完美的例子,说明在遵循MVVM方法时,我们应该使用后面的代码。如果它只是与UI相关,那么它在视图模型中没有任何意义,所以干脆不要把它放在那里。

请阅读MVVM限制是什么?

最新更新