C# WPF MVVM模式下在主窗體顯示子窗體並獲取結果


01

 

 

前言

 

 

 

在winform中打開一個新的子窗體很簡單,直接實例化窗體並show一下就可以:

Form2 f2 = new Form2();

  f2.Show();

  或者

 Form2 f2 = new Form2();

  f2.ShowDialog();

  

但是,在wpf的mvvm模式下,這種方法是行不通的,因為邏輯是在viedmodel中寫的,CM框架下viewmodel和view是通過正則自動匹配的。所以正常是通過調用框架下得WindowManager接口,在window后台代碼中通過WindowManager注冊需要彈出的窗體類型,在ViewModel通過WindowManager的Show或ShowDialog方法,顯示出來。

 

02

 

ShowDialog用法實現

首先實例化新的子窗體SubShowWindowViewModel ,然后通過CM框架的ioc容器獲取IWindowManager接口,通過接口的ShowDialog調出子窗體,ControlTestStr 用來顯示子窗體的賦值並在界面顯示。

using Caliburn.Micro;
using PropertyChanged;

namespace CaliburnTest
{
    [AddINotifyPropertyChangedInterface]
    public class ControlTestViewModel
    {
        public string ControlTestStr { get; set; } = string.Empty;
        public void  NewWindowShow()
        {
            ControlTestStr = "NewWindowShow";
            SubShowWindowViewModel subShowWindowViewModel = new SubShowWindowViewModel(ControlTestStr);
            IWindowManager windowManager = IoC.Get<IWindowManager>();
            windowManager.ShowDialog(subShowWindowViewModel);
            ControlTestStr = subShowWindowViewModel.SubShowWindowStr;
        }
    }
}

  

03

 

結果演示

 

 

ControlTestStr 獲取到了新窗體的賦值並顯示到了界面.

 

04

 

源碼下載

 

鏈接:https://pan.baidu.com/s/18Z340Jma-BYDzDA2QSgePg

 

提取碼:點擊在看后添加小編微信zls20210502獲取。

 

技術群:需要進技術群的添加小編微信時切記備注,進群!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM