为了账号安全,请及时绑定邮箱和手机立即绑定

如何从以 wpf mvvm 模式作为窗口打开的视图模型中关闭用户控件?

如何从以 wpf mvvm 模式作为窗口打开的视图模型中关闭用户控件?

C#
慕容708150 2021-06-30 10:05:13
我试图从在视图模型按钮命令中作为窗口/对话框打开的视图模型关闭用户控件。打开一个用户控件作为窗口/对话框: MainWindow >> Button >> Command via MainWindowViewModel >> Show usercontrol as window/dialog关闭上一步打开的用户控件:????另外我想知道我是否违反了 mvvm 模式,所以如果有人可以为我提供一些适当的例子,因为我对 wpf MVVM 模式相当陌生。视图模型中的主窗口按钮命令:private void ExecuteOtherMethod(object parameter)    {        registerWindow win = (registerWindow)Application.Current.MainWindow;        //win.pp.IsOpen = true;        win.bankRectangle.Visibility = Visibility.Visible;        Window window = new Window        {            WindowStyle = WindowStyle.None,            SizeToContent = SizeToContent.WidthAndHeight,            ResizeMode = ResizeMode.NoResize,            Content = new otherOptionsView()        };        window.Owner = win;        window.WindowStartupLocation = WindowStartupLocation.CenterOwner;        window.ShowDialog();    }关闭用户控件的用户控件视图模型: private void ExecuteMethod(object parameter)    {        //otherOptionsView newview = new otherOptionsView();        //Window parentWindow = (Window)newview.Parent;        //parentWindow.Close();        var displayViews = App.Current.Windows.OfType<otherOptionsView>();        if (displayViews.Any())            displayViews.First().Close();        registerWindow win = (registerWindow)Application.Current.MainWindow;        win.bankRectangle.Visibility = Visibility.Collapsed;    }
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

一种方法是根本没有窗口(如果它不是主窗口),如这里接受的答案中使用 MVVM 处理 WPF 中的对话框。在您的窗口中有一个自由浮动的用户控件,并将其可见性绑定到视图模型中的布尔值。

您还可以在WPF (MVVM) 中引发事件并在视图中处理它:Closing a view from Viewmodel? .

另一种方法是使用 ViewModel messenger 或 Mediator。这需要视图中的代码隐藏,并且通常不用于视图模型和视图之间的通信。您将视图注册到中介类并侦听视图模型通过中介发送的特定“关闭”请求。如使用 MVVM Light 的 Messenger 在视图模型之间传递值

另外,如果您实际上是在尝试关闭主窗口,为什么不使用Application.Current.Shutdown()


查看完整回答
反对 回复 2021-07-03
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

对于窗口管理,您始终可以使用 nuget 包“MvvmDialogs”,它是专门为帮助您处理窗口父子关系而设计的,并且具有相当大的示例应用程序集合。


查看完整回答
反对 回复 2021-07-03
  • 2 回答
  • 0 关注
  • 366 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信