2014-02-11 66 views
1

我在我的wp7應用程序中使用mvvm light,但我不確定如何超越簡單對話框。Mvvm燈對話框消息框。如何添加是,否,而不是取消?

我在我的代碼在我看來

Messenger.Default.Register<DialogMessage>(
      this, 
      msg => 
      { 
       var result = MessageBox.Show(
        msg.Content, 
        msg.Caption, 
        msg.Button); 

       // Send callback 
       msg.ProcessCallback(result); 
      }); 

我有這個後面我的視圖模型是這樣的

var message = new DialogMessage("Select Yes or No!", null) 
     { 
      Button = MessageBoxButton.OK, 
      Caption = "Yes or No" 
     }; 

     Messenger.Default.Send(message); 

那麼,如何才能獲得它,所以它必須是或否?

基本上,我需要一個像只是MVVM的XNA對話消息。

回答

0

消息框與MVVM Light或MVVM模式無關。基本上viewmodel發送消息通過Messenger查看,並在收到消息後通過顯示標準silverlight/windows phone消息框來響應。因此,我認爲,您需要使用其他消息框(XNA或其他第三方庫),因爲Windows Phone API僅公開了MessageBox類的OK/Cancel版本[1]

這是使用XNA消息框我淨髮現許多例子中的一個。您可以通過添加對Microsoft.Xna.Framework和Microsoft.Xna的引用來在Silverlight版本的Windows Phone項目中使用此功能。 Framework.GamerServices:

來源:

http://dotnet.dzone.com/articles/delivering-message-using

代碼:

Guide.BeginShowMessageBox("Version of Windows", "Pick a version of Windows.", 
    new List<string> { "Vista", "Seven" }, 0, MessageBoxIcon.Error, 
    asyncResult => 
    { 
     int? returned = Guide.EndShowMessageBox(asyncResult); 
     Debug.WriteLine(returned.ToString()); 
    }, null); 

MVVM版本:

Messenger.Default.Register<DialogMessage>(
    this, 
    msg => 
     { 
      Guide.BeginShowMessageBox("Version of Windows", "Pick a version of Windows.", 
        new List<string> {"Vista", "Seven"}, 0, MessageBoxIcon.Error, 
        asyncResult => 
         { 
          int? returned = Guide.EndShowMessageBox(asyncResult); 
          Debug.WriteLine(returned.ToString()); 
         }, null); 
     }); 

結果:

enter image description here

+0

是的我知道現在與MVVM Light或MVVM有關。我的意思是我需要以某種方式包裝XNA對話框,以便它適用於MVVM模式。我不知道如何包裝它,如果我可以像站立信息框一樣離開,或者需要做更多的事情,因爲這個XNA對話框也有它自己的回調,所以我必須以某種方式從MVVM傳入部分也是如此。 – chobo2

+0

我不太明白。所以你想知道用戶是否使用MVVM模式在viewmodel的消息框中按下了「是」或「否」?如果這是問題,您可以在視圖中獲得對話結果,然後使用Messenger將其發送到viewmodel。在ok/cancel對話框的情況下,你有辦法做到這一點嗎? – har07

+0

現在,因爲我的代碼顯示我有一個從我的View Model觸發的對話框。唯一的問題是它僅限於「確定」和「取消」。我想從我的視圖模型中觸發一個對話框,但我想讓它說「是」或「否」。我不知道該怎麼做。 – chobo2