0

在我的彈出窗口窗口(包含遊戲選項控件)我有「重置HighScores」按鈕。按鈕消防MessageDialog與TextBlock「你確定......」和兩個按鈕「是」和「否」。但是,當MessageDialog打開時,Popup關閉。你知道如何讓彈出窗口仍然活着嗎?MessageDialog關閉彈出窗口

回答

1

將您的PopupIsLightDismissEnabled屬性改爲false即可實現。

popup.IsLightDismissEnabled = false; 
+0

不起作用,話題還是實際 –

+0

你應該加上'popup.LostFocus'事件處理程序,然後在事件處理程序,你可以確保它保持打開狀態 – Mayank

4

我能夠使用Action委託作爲當MessageDialog關閉回調來解決這個問題。

關鍵是要調用await後的動作MessageDialogShowAsyncasync函數中。

另一個關鍵是關閉並打開您的彈出窗口,以獲得IsLightDismissEnabled實際佔據。

XAML:

<Popup 
    IsLightDismissEnabled="{Binding IsLightDismiss, Mode=TwoWay}" 
    IsOpen="{Binding IsPopupOpen, Mode=TwoWay}"> 

視圖模型:

private bool isPopupOpen; 
public bool IsPopupOpen 
{ 
    get { return this.isPopupOpen; } 
    set { this.SetProperty(ref this.isPopupOpen, value); } 
} 

private bool isLightDismiss; 
public bool IsLightDismiss 
{ 
    get { return this.isLightDismiss; } 
    set { this.SetProperty(ref this.isLightDismiss, value); } 
} 

protected void ShowDialog() 
{ 
    this.IsLightDismiss = false; 
    this.IsPopupOpen = false; 
    this.IsPopupOpen = true; 
    Action showPopup =() => { 
     this.IsLightDismiss = true; 
     this.IsPopupOpen = false; 
     this.IsPopupOpen = true; 
    }; 
    ShowMessageDialog("message", "title", showPopup); 
} 
private async void ShowMessageDialog(string message, string title, Action callback) 
{ 
    var _messageDialog = new MessageDialog(message, title); 
    await _messageDialog.ShowAsync(); 
    callback(); 
}