我遇到了问题:
如果我对对话框执行第一个请求并将其添加到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>
答案 0 :(得分:0)
您可以传递工厂来创建对话框,而不是实例到对话框本身。即实施MessageAction.DialogFactory
属性,代替MessageAction.Dialog
。
然后在你的(修改过的)MessageAction
中,你可以在工厂触发时创建一个新的对话框。
但是,如果您只是将新对话框填入父网格(例如禁用其他对话框等),则可能会遇到其他问题。最好将交互请求排入操作中。
答案 1 :(得分:0)
Type
是MessageAction.Dialog
的内容是什么?如果为每个节目对话框请求创建ContentControl
作为对话框元素,然后将DialogControl
模型的具体实例传递给ContentTemplate
,则可以避免出现问题创建了ContentControl
。
这将使您的Action保持通用,并为每个请求创建一个新实例。例如,Type
的{{1}}可以是MessageAction.DialogTemplate
。