我正在实现一个反馈对话框,并希望使用IScorableand键将“ feedback”一词从任何地方插入该对话框并将其压入FeedbackDialog堆栈。
从用户收集反馈时,我不希望出现这种情况。有没有办法确定my FeedbackDialog是否已经在堆栈中?所以我不会不小心双按它吗?
您可以像下面那样解决堆栈。首先,注册必要的模块:
private void RegisterTypes()
{
var builder = new ContainerBuilder();
builder.RegisterModule(new DialogModule());
builder.RegisterModule(new ReflectionSurrogateModule());
builder.RegisterModule(new DialogModule_MakeRoot());
// necessary configurations
// ...
}
Run Code Online (Sandbox Code Playgroud)
之后,解决堆栈:
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity))
{
var stack = scope.Resolve<IDialogStack>();
}
Run Code Online (Sandbox Code Playgroud)
在stack.Frames你可以找到在堆栈对话框它们的顺序对话框的列表(stack.Frames[0]就是在堆栈的顶部)。您可以使用的Target属性(Frame即)找到对话框的名称stack.Frames[0].Target。因此,您可以FeedbackDialog使用以下代码在堆栈中找到它(如果存在):
stack.Frames.Any(x=> x.Target.GetType().UnderlyingSystemType.Name == "FeedbackDialog")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |