2013-07-22 73 views
1

我使用MVVMCrossWPF應用,我想提供一個關閉(或退出)在GUI按鈕來關機整個應用程序。有沒有一種簡單的方法來使用MVVMCross功能?如何在MVVMCross WPF應用程序中實現關閉按鈕?

我曾嘗試以下方法與我MainViewModel

public class MainViewModel : MvxViewModel 
{ 
    private MvxCommand _closeCommand; 
    public MvxCommand CloseCommand { 
     get { 
      return _closeCommand ?? (_closeCommand = new MvxCommand(DoClose)); 
     } 
    } 

    public void DoClose() { 
     Close(this); 
    } 
} 

可惜,都無濟於事。當我按下已綁定到CloseCommand的按鈕時,DoClose方法確實會被調用,但即使WPF AppStartupUri設置爲MainView,視圖模型(和相應的視圖)也無法關閉。

+0

你有沒有試過Application.Current.Shutdown(); ? – Nitesh

+1

謝謝@Nitesh。理想情況下,我想在便攜式視圖模型中管理應用程序關閉。 'Application.Current.Shutdown'在PCL「核心」項目中不可用。 –

+0

好,那麼我想也得到一個問題的答案。 – Nitesh

回答

4

許多MvvmCross平臺不支持關閉應用程序的應用程序 - 這在iOS,WindowsPhone,Android,WindowsPhone等行爲中不受歡迎 - 它不受公共API支持 - 因此,平臺請求。然而,如果你想爲那些支持它的平臺實現這個功能,那麼我認爲最好的地方可能會放在演示者或者自定義UI注入服務中。


爲了把它放在一個自定義的演示,簡單地說:

  • 創建自定義演示類(基於MvxWpfViewPresenter.cs)在CreatePresenter方法在覆蓋
  • 回報這個類的一個實例您的Setup.cs文件
  • 將覆蓋您的自定義演示文稿中的ChangePresentation方法 - 此方法可能可能使用'知名'MvxClosePresentationHint.cs這是Close發送的內容或它發送的內容ld使用您定義的新自定義演示提示,並通過ChangePresentation(MvxPresentationHint hint)在ViewModel中發送。

要在一些自定義的UI服務把這個功能來代替,看N的http://mvvmcross.wordpress.com/


= 31如果你正在尋找該關閉區域,那麼你可能還需要考慮採取什麼步驟當應用程序關閉時(通過用戶或操作系統操作)。 MvvmCross確實揭示了框架內常見的「終身監控」鉤子的開始,但實際上這些在目前是非常基本的 - 所以你可能會發現你需要在這裏建立自己的通用層。

+0

非常感謝您的出色答案(以及* MVVMCross *本身),@Stuart。 –

+2

致@Stuart和其他感興趣的團體:值得一提的是,請查找一個自定義WPF視圖演示者類的示例,其中包含基本'Close'支持[https://gist.github.com/cureos/6053471] 。 –

相關問題