WPF:MVVM模式下ViewModel調用View


兩種基本方法: 消息通知參數傳遞

一、消息通知

利用View里的IsEnable屬性

原理是這樣的:

1、UI中的IsEnabled綁定VM中的屬性

2、UI的后台代碼中,注冊IsEnableChange事件,在這個事件里,檢測到傳過來的值滿足某個條件,即可觸發Close()命令

如此,VM控制自己那個屬性就能達到關閉V的目的了。

二、參數傳遞

根據參數傳遞的不同。分為傳遞函數和傳遞View對象。

傳遞函數

該方法:需要三步。

重寫ViewModel的構造函數

public ProduceCloud_ViewModel(Action close)
        {
            this.close = close;           
        }

View在新建ViewModel對象時,將View對象的Close方法傳遞給ViewModel。

public ProduceDsm_View()
        {
            InitializeComponent();
            
            produceCloudViewModel = new ProduceCloud_ViewModel(this.Close);
            this.DataContext = produceCloudViewModel;
        }

 當執行完某個操作需要關閉View時,調用該函數委托即可。

 private void Act_OnClick(object obj)
        {

         //其他操作
            this.close.Invoke();

        }

傳遞View對象

重寫ViewModel的構造函數

class MyViewModel
    {
        /// <summary>
        /// 添加Window屬性
        /// </summary>
        private Window window  { get; set; }

        /// <summary>
        /// 構造函數,接收window作為參數
        /// </summary>
        public MyViewModel(object window)
        {          
            this.window = (Window)window;           
        }

    }

新建ViewModel實例的時候,傳入View對象。

public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MyViewModel(this);
        }

需要的時候,就調用window的Close方法。

this.window.Close();

 


免責聲明!

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



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