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(); 
}