亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從以 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 關注
  • 447 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號