我有两个对话框ParentDialog和ChildDialog,它们都派生于ComponentDialog,父级重写OnBeginDialogAsync,并在其中调用子级:
protected override async Task<DialogTurnResult> OnBeginDialogAsync(DialogContext innerDc, object options, CancellationToken cancellationToken = default) {
return await innerDc.BeginDialogAsync(nameof(ChildDialog), options, cancellationToken);
}
在孩子身上,我提出一些要求,完成后,我打电话给
innerDc.EndDialogAsync(result,cancellationToken);
。在父级中,我重写了 ResumeDialogAsync:
public override Task<DialogTurnResult> ResumeDialogAsync(DialogContext outerDc, DialogReason reason, object result = null, CancellationToken cancellationToken = default) {
return base.ResumeDialogAsync(outerDc, reason, result, cancellationToken);
}
文档指出 ResumeDialogAsync 是:
当对话框的实例从当前实例使用 BeginDialogAsync() 启动的另一个对话框返回时调用的方法。如果未实现此方法,则对话框将通过调用 EndDialogAsync() 自动结束。从被调用对话框传递的任何结果都将传递给当前对话框的父级。
我的问题是,为什么这个方法根本没有被调用,我错过了什么吗?
感谢您花时间阅读。我希望我说得足够清楚并感谢任何帮助。
我也遇到过同样的问题。请参阅我的堆栈溢出答案此处,了解问题的原因和修复方法。