视图模型最佳实践中的视觉状态名称



我是Windows Universal应用程序编程的新手。决定使用 Tmeplate10 创建我的第一个应用程序。我想知道在视图模型中获取当前视觉状态名称的最佳实践是什么。

在 XAML 背后的代码中,我一直在使用:

 VisualState vs = AdaptiveVisualStateGroup.CurrentState;
 if (vs != null)
 {
   string actualStateName = vs.Name
 }

在 ViewModel 中获取相同内容的最佳方法是什么?

请不要试图弄乱视图模型中的视觉状态。考虑到这一点,您的视图模型的存在是为了处理您的视图所需的基础数据。这与在视图中显示数据不同。另一方面,您的视图具有呈现数据的逻辑 - 并根据某些触发器使用不同的视觉状态来执行此操作。这些触发器是可视触发器,而不是数据触发器。因此,应处理视图中的视觉状态和视图的隐式代码隐藏。

如果数据影响视图,例如用户突然注销或其他内容,那么这也是视图模型中用于更改视觉状态的属性(如 IsLoggedIn(。如果您试图在视图模型中获取对视觉状态的引用,那么您正在缩短 MVVM 的意图。

话虽如此,我不是您应用程序的开发人员,您是。而且,您显示的代码是可靠地获取当前视觉状态的唯一方法。值得指出的是,多个视觉状态可以跨多个视觉状态组同时处于活动状态。如何在视图模式下运行您提供的代码而不直接引用视觉状态组类?如何到达那里?

Page.OnNavigatedTo() { ViewModel.Group = AdaptiveVisualStateGroup; }就是这样。

但我希望你考虑其余的答案。

相关内容

  • 没有找到相关文章

最新更新