Uwp 关闭代码隐藏中的内容对话框

Uwp 关闭代码隐藏中的内容对话框,uwp,Uwp,我有一个带有文本框的内容对话框,我想在文本框中按enter键时关闭该对话框。有没有一种方法可以在不单击主按钮的情况下实现这一点?ContentDialog.Hide()隐藏对话框,然后返回ShowAsync调用。我不能保证呼叫与主按钮相同,但对我来说已经足够了。:) 我陷入的陷阱是对ContentDialogResult的响应,如下所示: ContentDialogResult result = await cldEdit.ShowAsync(); if (result == C

我有一个带有文本框的内容对话框,我想在文本框中按enter键时关闭该对话框。有没有一种方法可以在不单击主按钮的情况下实现这一点?

ContentDialog.Hide()隐藏对话框,然后返回ShowAsync调用。我不能保证呼叫与主按钮相同,但对我来说已经足够了。:)


我陷入的陷阱是对ContentDialogResult的响应,如下所示:

    ContentDialogResult result = await cldEdit.ShowAsync();
    if (result == ContentDialogResult.Primary)
    {
        DoTextChange();
    }
而是忽略结果,并根据事件调用函数

因此,为textbox 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;
IAsyncOperation operation=dialog.ShowAsync();
dialog.AsyncInfo=操作;
等待手术;
将公共属性添加到名为AsyncInfo的ContentDialog类中,类型为IAsyncInfo。如果要删除对话框,只需在ContentDialog实现中调用AsyncInfo.Cancel即可