0

我面临一个问题:

如果我对对话框执行第一个请求并将其添加到 Grid.Children ......有时我必须在这个激活的对话框中调用另一个对话框,在这种情况下,传递相同的实例抛出操作,并且应用程序尝试再次将相同的实例添加到 GRID 子项中......我得到了一个例外。

对于我在视图模型中执行的每个请求,我想创建一个“views:DialogControl”的新实例,我该如何完成这个?

关注我的观点互动:

    <i:Interaction.Triggers>
        <prism:InteractionRequestTrigger SourceObject="{Binding Path=NotificationToDialog}">
            <views:MessageAction>
                <views:MessageAction.Dialog>
                    <views:DialogControl />
                </views:MessageAction.Dialog>
            </views:MessageAction>
        </prism:InteractionRequestTrigger>
    </i:Interaction.Triggers>
4

2 回答 2

0

Type是什么MessageAction.Dialog?如果您ContentControl为每个显示对话框请求创建一个作为对话框元素,然后不将DialogControl模型的具体实例传递ContentTemplate给您刚刚创建的ContentControl.

这将使您的操作保持通用性,并为每个请求创建一个新实例。TypeofMessageAction.DialogTemplate可以是例如DataTemplate

于 2013-04-17T10:59:37.160 回答
0

您可以传递一个用于创建对话框的工厂,而不是对话框本身的实例。即你实现了一个MessageAction.DialogFactory属性,而不是MessageAction.Dialog. 然后在您的 (modified)MessageAction中,您可以在触发时从工厂创建一个全新的对话框。

但是,如果您只是将新对话框塞进父网格中(例如禁用其他对话框等),您可能会遇到其他问题。在操作中将交互请求排队可能会更好。

于 2013-04-17T10:47:40.693 回答