ViewModel 最佳实践中的视觉状态名称
Visual State name in ViewModel Best Practice
我是 Windows 通用应用程序编程的新手。决定使用 Tmeplate10 创建我的第一个应用程序。
我想知道在视图模型中获取当前视觉状态名称的最佳做法是什么。
在后面的代码中XAML我一直在使用:
VisualState vs = AdaptiveVisualStateGroup.CurrentState;
if (vs != null)
{
string actualStateName = vs.Name
}
在 ViewModel 中获得相同内容的最佳方法是什么?
请不要试图弄乱视图模型中的视觉状态。考虑到这一点,您的视图模型的存在是为了处理您的视图所需的基础数据。这与在您的视图中呈现数据不同。另一方面,您的视图具有呈现数据的逻辑 - 并根据特定触发器以不同的视觉状态来呈现数据。这些触发器是视觉触发器,而不是数据触发器。因此,您应该处理视图中的视觉状态和视图的隐式代码隐藏。
如果数据影响视图,例如用户突然注销或其他原因,那么这也是视图模型中用于更改视图的 属性(如 IsLoggedIn)视觉状态。如果您试图在您的视图模型中获取对视觉状态的引用,那么您有点绕过了 MVVM 的意图。
也就是说,我不是您应用程序的开发者,您才是。而且,您显示的代码是可靠地获取当前视觉状态的唯一方法。值得指出的是,多个视觉状态组中可以同时激活不止一种视觉状态。你怎么可能 运行 你提供的代码没有在你的视图模式中直接引用视觉状态组 class?如何到达那里?
Page.OnNavigatedTo() { ViewModel.Group = AdaptiveVisualStateGroup; }
是怎么回事。
但我希望您考虑其余的答案。
我是 Windows 通用应用程序编程的新手。决定使用 Tmeplate10 创建我的第一个应用程序。 我想知道在视图模型中获取当前视觉状态名称的最佳做法是什么。
在后面的代码中XAML我一直在使用:
VisualState vs = AdaptiveVisualStateGroup.CurrentState;
if (vs != null)
{
string actualStateName = vs.Name
}
在 ViewModel 中获得相同内容的最佳方法是什么?
请不要试图弄乱视图模型中的视觉状态。考虑到这一点,您的视图模型的存在是为了处理您的视图所需的基础数据。这与在您的视图中呈现数据不同。另一方面,您的视图具有呈现数据的逻辑 - 并根据特定触发器以不同的视觉状态来呈现数据。这些触发器是视觉触发器,而不是数据触发器。因此,您应该处理视图中的视觉状态和视图的隐式代码隐藏。
如果数据影响视图,例如用户突然注销或其他原因,那么这也是视图模型中用于更改视图的 属性(如 IsLoggedIn)视觉状态。如果您试图在您的视图模型中获取对视觉状态的引用,那么您有点绕过了 MVVM 的意图。
也就是说,我不是您应用程序的开发者,您才是。而且,您显示的代码是可靠地获取当前视觉状态的唯一方法。值得指出的是,多个视觉状态组中可以同时激活不止一种视觉状态。你怎么可能 运行 你提供的代码没有在你的视图模式中直接引用视觉状态组 class?如何到达那里?
Page.OnNavigatedTo() { ViewModel.Group = AdaptiveVisualStateGroup; }
是怎么回事。
但我希望您考虑其余的答案。