我遇到了Prism / WPF自定义交互请求弹出窗口的问题。弹出窗口在第一次请求时正确呈现,但每个后续弹出窗口都重用相同的视图。这导致TextBlock
控件连接文本,滚动条不可见,ItemsControl
项中的动态数据不可见,弹出窗口大小错误等。是否可以强制创建新的弹出窗口每个新的交互请求或刷新弹出窗口中的所有控件?
要显示弹出窗口我正在使用PRISM文档中的标准代码,例如弹出窗口被实例化为:
PopUpViewModel displayData = reportCreator.GetReport();
this.CustomConfirmationRequest.Raise(displayData, res => {
if (res.Confirmed)
{ ... }
});
其中PopUpViewModel
继承Confirmation, IInteractionRequestAware
XAML是:
<prism:InteractionRequestTrigger SourceObject="{Binding CustomConfirmationRequest, Mode=OneWay}">
<prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True" WindowStartupLocation="CenterScreen" >
<prism:PopupWindowAction.WindowContent>
<popups:SoPopUp/>
</prism:PopupWindowAction.WindowContent>
</prism:PopupWindowAction>
</prism:InteractionRequestTrigger>
答案 0 :(得分:4)
而不是
<prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True" WindowStartupLocation="CenterScreen">
<prism:PopupWindowAction.WindowContent>
<popups:SoPopUp/>
</prism:PopupWindowAction.WindowContent>
</prism:PopupWindowAction>
你可以使用
<prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True" WindowStartupLocation="CenterScreen" WindowContentType = "{x:Type popups:SoPopUp}"/>
当您指定WindowContent时,在加载此xaml时会创建一次SoPopUp实例。每次触发PopupWindowAction时都会重复使用它。如果指定WindowContentType,则每次触发PopupWindowAction时都会重新创建SoPopUp实例。另请注意,DI用于实例化SoPopUp,以便SoPopUp构造函数可以具有由DI解析的参数。
答案 1 :(得分:0)
最好的办法是创建一个能够应对重复使用的正确视图模型,例如详细here。
你可以尝试使用var MyObject1 = function(a, b) {
return {
myA: a,
myB: b,
hello: function() {
return "Hello !";
}
};
};
let obj1 = MyObject1(1, 2);
console.log(obj1);
console.log(obj1.myA);
,但我不希望在这里提供帮助,因为你没有做导航......