为什么prism的弹出窗口操作窗口内容没有拉伸到它的父窗口?

时间:2017-01-23 02:23:04

标签: wpf prism popupwindow

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

<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>

在用户尝试调整弹出窗口大小之前,一切正常。内容将以其父窗口为中心。

Popup Window Screenshot

为了理解我的错,我尝试探索棱镜的交互性样本,我也看到同样的问题。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

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

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

延迟细节&amp;溶液 我的问题来自我的ShellView中的第一个xaml,我的弹出窗口是DataFeedManagerView,它有Width =&#34; 960&#34;和高度=&#34; 540&#34;固定长度。因此,当我调整弹出窗口的大小时,它将以我的用户控件为中心。所以很快就会删除宽度和宽度。高度xaml部件来自DataFeedManagerView,它将拉伸到弹出窗口内容,就像我想要的那样。但删除后,当弹出窗口显示在屏幕上时,它的大小会太大,我想再将它的大小设置为固定值。为了解决这个问题,我还要给弹出窗口一个样式。所以我的问题的解决方案是从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>

我希望我的问题&amp;答案将有助于他人。感谢。

答案 1 :(得分:1)

  

我该如何解决这个问题?

在官方的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>