为什么 Prism 的弹出 window 操作 window 内容没有延伸到它的父级 window?

Why prism's popup window action window content not stretched to it's parent window?

我正在使用自定义弹出窗口window 向用户显示一些内容。

<i:Interaction.Triggers>
    <mvvm:InteractionRequestTrigger SourceObject="{Binding NotificationRequest}">
        <mvvm:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True">
            <mvvm:PopupWindowAction.WindowContent>
                <views:DataFeedManagerView/>
            </mvvm:PopupWindowAction.WindowContent>
        </mvvm:PopupWindowAction>
    </mvvm:InteractionRequestTrigger>
</i:Interaction.Triggers>

一切正常,直到用户尝试调整弹出窗口的大小 window。内容将以其父级 window.

为中心

为了了解我的错,我尝试探索 Prism 的交互示例,我发现也存在同样的问题。我该如何解决这个问题?

How can i solve this problem?

在官方 Prism 示例中,只需删除 CustomPopupView UserControl 的显式宽度即可。您可以通过将宽度设置为 double.NaN:

来实现
<prism:PopupWindowAction>
    <prism:PopupWindowAction.WindowContent>
        <views:CustomPopupView Width="NaN" />
    </prism:PopupWindowAction.WindowContent>
</prism:PopupWindowAction>

您应该能够对您的 DataFeedManagerView 进行同样的操作:

<mvvm:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True">
    <mvvm:PopupWindowAction.WindowContent>
        <views:DataFeedManagerView Height="NaN" Width="NaN" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    </mvvm:PopupWindowAction.WindowContent>
</mvvm:PopupWindowAction>

我想向你道歉(mm8) 因为我的问题不完整,所以你的回答也不完整。看到你的回答我明白了。

为什么你的回答不能解决我的问题? 因为我的 DataFeedManagerView 必须是 Width="960" 和 Height="540" 固定长度。更改选择时左侧有一个项目控件,中心有内容控件,其内容动态变化(当然内容大小也在变化)与选择。

延迟细节和解决方案。 首先 xaml 在我的 ShellView 问题中,我的弹出窗口 window 是 DataFeedManagerView,它的宽度为“960”,高度为“540”,长度固定。因此,当我调整弹出窗口 window 大小时,它将以我的用户控件为中心。所以很快只从 DataFeedManagerView 中删除宽度和高度 xaml 部分,它将像我想要的那样拉伸到弹出 window 内容。但是删除后,当弹出window显示在屏幕上时,它的大小会太大,我想再次将它的大小设置为固定值。为了解决这个问题,我也会给弹出窗口一个样式 window。所以我的问题的解决方案是从 DataFeedManagerView 中删除固定的宽度和高度属性并更改 ShellView xaml,如下所示;

<i:Interaction.Triggers>
    <mvvm:InteractionRequestTrigger SourceObject="{Binding NotificationRequest}">
        <mvvm:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True">
            <mvvm:PopupWindowAction.WindowStyle>
                <Style TargetType="Window">
                    <Setter Property="Width" Value="960"/>
                    <Setter Property="Height" Value="540"/>
                </Style>
            </mvvm:PopupWindowAction.WindowStyle>
            <mvvm:PopupWindowAction.WindowContent>
                <views:DataFeedManagerView/>
            </mvvm:PopupWindowAction.WindowContent>
        </mvvm:PopupWindowAction>
    </mvvm:InteractionRequestTrigger>
</i:Interaction.Triggers>

希望我的问题和回答能对其他人有所帮助。谢谢