在代码隐藏中关闭内容对话框
Close Content Dialog in Code Behind
我有一个带有文本框的内容对话框,我想在文本框中按回车键时关闭对话框。有没有一种方法可以在不单击主按钮的情况下实现这一点?
ContentDialog.Hide() 隐藏对话框,然后返回 ShowAsync 的调用。我不能保证呼叫与主按钮相同,但对我来说已经足够了。 :)
https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.contentdialog.hide
我陷入的陷阱是像这样响应 ContentDialogResult:
ContentDialogResult result = await cldEdit.ShowAsync();
if (result == ContentDialogResult.Primary)
{
DoTextChange();
}
而是忽略结果并根据事件调用您的函数。
因此,为文本框 KeyUp 事件和 PrimaryButtonClick 事件添加代码:
private void txtEdit_KeyUp(object sender, KeyRoutedEventArgs e)
{
switch (e.Key) {
case Windows.System.VirtualKey.Enter:
if (cldEdit.IsPrimaryButtonEnabled) {
cldEdit.Hide();
DoTextChange();
}
break;
case Windows.System.VirtualKey.Escape:
cldEdit.Hide();
break;
}
}
private void cldEdit_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
DoTextChange();
}
显示对话框时,您需要保留返回的异步操作,然后可以将其传递到对话框中,以便随时取消。只有在那之后你才真正等待它。
IAsyncOperation<ContentDialogResult> operation = dialog.ShowAsync();
dialog.AsyncInfo = operation;
await operation;
将 public 属性 添加到您的 ContentDialog class 中,名为 AsyncInfo,类型为 IAsyncInfo。当您希望删除对话框时,只需在 ContentDialog 实现中调用 AsyncInfo.Cancel。
我有一个带有文本框的内容对话框,我想在文本框中按回车键时关闭对话框。有没有一种方法可以在不单击主按钮的情况下实现这一点?
ContentDialog.Hide() 隐藏对话框,然后返回 ShowAsync 的调用。我不能保证呼叫与主按钮相同,但对我来说已经足够了。 :)
https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.contentdialog.hide
我陷入的陷阱是像这样响应 ContentDialogResult:
ContentDialogResult result = await cldEdit.ShowAsync();
if (result == ContentDialogResult.Primary)
{
DoTextChange();
}
而是忽略结果并根据事件调用您的函数。
因此,为文本框 KeyUp 事件和 PrimaryButtonClick 事件添加代码:
private void txtEdit_KeyUp(object sender, KeyRoutedEventArgs e)
{
switch (e.Key) {
case Windows.System.VirtualKey.Enter:
if (cldEdit.IsPrimaryButtonEnabled) {
cldEdit.Hide();
DoTextChange();
}
break;
case Windows.System.VirtualKey.Escape:
cldEdit.Hide();
break;
}
}
private void cldEdit_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
DoTextChange();
}
显示对话框时,您需要保留返回的异步操作,然后可以将其传递到对话框中,以便随时取消。只有在那之后你才真正等待它。
IAsyncOperation<ContentDialogResult> operation = dialog.ShowAsync();
dialog.AsyncInfo = operation;
await operation;
将 public 属性 添加到您的 ContentDialog class 中,名为 AsyncInfo,类型为 IAsyncInfo。当您希望删除对话框时,只需在 ContentDialog 实现中调用 AsyncInfo.Cancel。