ポップアップウィンドウ(ゲームオプションコントロールを含む)に[ハイスコアのリセット]ボタンがあります。ボタンは、TextBlock「Areyousurethat...」と2つのボタン「Yes」と「No」でMessageDialogを起動します。ただし、MessageDialogが開くと、Popupは閉じます。ポップアップをまだ生きたままにする方法を知っていますか?
2 に答える
4
が閉じAction
られたときのコールバックとしてデリゲートを使用して、これを回避することができました。MessageDialog
重要なのは、関数内のawait
onMessageDialog
の後に Action を呼び出すことです。ShowAsync
async
もう 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
それを達成するためにあなたPopup
のIsLightDismissEnabled
プロパティをに設定します。false
popup.IsLightDismissEnabled = false;
于 2012-11-10T18:51:21.657 に答える