wpf - PRISM WPF 自定义交互请求 - 动态视图控件无法正确显示
问题描述
我对 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>
解决方案
代替
<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 时,SoPopUp 的实例会在加载此 xaml 时创建一次。然后每次触发 PopupWindowAction 时都会重用它。如果您指定 WindowContentType,则每次触发 PopupWindowAction 时都会重新创建一个 SoPopUp 实例。另请注意,DI 用于实例化 SoPopUp,因此 SoPopUp 构造函数可能具有要由 DI 解析的参数。
推荐阅读
- reactjs - Uncaught (in promise) SyntaxError: Unexpected token in React
- python - 在 Python/Airflow 中加密数据并在 BigQuery 中解密的方法
- .net - 如何在.NET CORE(使用身份)中分散相同的角色但不同的声明?
- delphi - ShellExecute 打开文件夹/文件并滚动到选定的
- mysql - MySQL显示限制值的总数
- java - Lombok @Value 注释未在 Eclipse 中生成 @ConstructorProperties
- python - 使用本地包中的类
- symfony - 架构生成命令上的 API 平台 OpenSSL 错误
- javascript - React:直接改变状态并强制组件渲染
- javascript - amp-list 内的 amp-list