好比咱們在作登陸的時候須要關閉父窗體打開子窗體。使用Caliburn.Micro它的時候咱們關閉登陸窗口的時候主頁面也會關閉。this
解決方法就是在登陸頁面的CS裏面寫spa
IndexView iv = new IndexView();//主窗體
this.Close();//關閉登陸頁面
iv.ShowDialog();//打開主窗體登錄
這3句話只能在CS裏面寫,在ViewModel裏面是不可能的。緣由很簡單,View引用ViewModel。咱們都知道CM的協議會自動給咱們關聯View和VIewMode,像咋剛纔這麼寫,沒問題,登陸頁面關閉引用
主窗口也打開了,但會有一個問題,你會發現當打開主窗口的時候不會執行ViewModel裏面的代碼。其實這個很容易理解。CM打開窗口的方法都須要一個實例。好比ShowDialog(new 你要打開的窗口的類名)。咱們直接方法
用View的ShowDialog確定不會執行。解決方法就是像MVVM那樣,咱們直接設置View的DataContent就能夠解決。美中不足的地方就是咱們在CS裏面寫了代碼。協議