2013-11-28 68 views
0

我的應用程序有一個簡單的搜索屏幕。其中一個參數是「半徑」(與用戶當前位置的距離)。半徑選擇器綁定到ViewModel上的「Radius」屬性。WinRT中的對話服務/ MVVM架構中的自定義模式對話框

視圖模型被監聽在RADIUS屬性更改,當它改變時,如果用戶之前沒有選擇自己的位置,我想調用對話服務。

因此,我希望應用程序使用MVVM Light的messenger服務來偵聽來自ViewModel的消息,並且如果它收到消息「selectlocation」,它應該顯示一個「位置選擇器」UI作爲模式對話框。

使用MessageDialog很容易。不知何故,它創建了它的用戶界面,並將其覆蓋在屏幕上的任何位置。我該怎麼做呢?但是有完全定製的模態對話框?

我可以在頁面內創建一個用戶控件和主機,然後讓頁面監聽消息,然後顯示用戶控件,但是,我更喜歡它在全局級別。

僞代碼,我想有一個對話服務,這是否:

void SelectLocation(onSuccessCallback, onCancelCallback) 
{ 
    Window.Current.ShowDialog(new LocationSelectorUserControl(onSuccessCallback, onCancelCallback)); 
{ 

幾乎一樣MessageDialog但自定義UI。

有沒有辦法做到這一點?

回答

0

說到抽象,提供類似的東西,你必須創建一個空白窗口,即:

  • 中心本身在屏幕上
  • 聲明本身最上面
  • 禁用父窗口直到它關閉
  • 實現特定ShowDialog方法超負荷與retu你想獲得的價值
+0

是的,我很努力地找到一種方法來在另一頁上分頁。 – krisdyson

+0

有一些關於此的建議:http://stackoverflow.com/questions/14588952/adding-textbox-in-winrt-messagedialog – 2013-11-28 12:00:27