0

ポップアップウィンドウ(ゲームオプションコントロールを含む)に[ハイスコアのリセット]ボタンがあります。ボタンは、TextBlock「Areyousurethat...」と2つのボタン「Yes」と「No」でMessageDialogを起動します。ただし、MessageDialogが開くと、Popupは閉じます。ポップアップをまだ生きたままにする方法を知っていますか?

4

2 に答える 2

4

が閉じActionられたときのコールバックとしてデリゲートを使用して、これを回避することができました。MessageDialog

重要なのは、関数内のawaitonMessageDialogの後に Action を呼び出すことです。ShowAsyncasync

もう 1 つの鍵は、ポップアップを閉じて開いて、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();
}
于 2013-09-18T20:44:45.450 に答える
1

それを達成するためにあなたPopupIsLightDismissEnabledプロパティをに設定します。false

popup.IsLightDismissEnabled = false;
于 2012-11-10T18:51:21.657 に答える