gpt4 book ai didi

mvvm - 显示当前 View 模型中的另一个 View 并关闭 View 模型中的 View ?

转载 作者:行者123 更新时间:2023-12-03 10:24:24 30 4
gpt4 key购买 nike

我有另一个 View 设置,并准备好等待其viewmodel。我的RelayCommand到达我的“当前” View 模型。从当前的 View 模型显示新 View 的最佳方法是什么?

我一直在阅读,看来我需要使用Messenger将消息从我的 View 模型发送到???与我要显示的 View 关联的新 View 模型?但是我将如何显示 View ?

还有一种方法可以支持从 View 模型关闭 View 吗?我不知道mvvm-light是否会为表带来任何额外的东西-即..触发以强制viewmodel关闭 View ?

最佳答案

在WPF中,有两种方法(开箱即用)用于“显示”/“关闭” View 。第一种方法很简单,就是通过.Show().ShowDialog()方法显示一个Window或Dialog,然后可以使用.Close()方法将其关闭。在这种情况下,您可以使用前面提到的MVVMLight Messenger类将显示/关闭消息以分离的方式发送到 View 。这是“关闭”的示例。

在ViewModel中:

CloseTheView()
{
Messenger.Default.Send(new CloseTheViewMessage);
}

在您的 View 背后的代码中:
//Constructor
public TheView()
{
...
Messenger.Default.Register<CloseTheViewMessage>( () => this.Close() );
}

如您所见,这涉及代码隐藏文件中的一些代码,但这没什么大不了的,因为它只是一行功能。

第二种方法是使用 导航框架(可用于WPF和Silverlight)。您定义一个“Shell”,它是主要的 Window(或 UserControl),在其中放置一个 frame,并使其他 View 继承自 Page,然后使用与以下内容关联的 NavigationService的实例从ViewModel启动导航 Frame(或直接与页面本身关联的代码)。

希望这可以帮助 :)

关于mvvm - 显示当前 View 模型中的另一个 View 并关闭 View 模型中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5871834/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com