2017-01-23 1 views
0

Ich verwende ein benutzerdefiniertes Popup-Fenster, um dem Benutzer Inhalte anzuzeigen.Warum wurde der Popup-Fenster-Aktionsfensterinhalt des Prismas nicht auf das übergeordnete Fenster gestreckt?

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

Alles funktioniert einwandfrei, bis der Benutzer versucht, die Größe des Popup-Fensters zu ändern. Der Inhalt wird auf das übergeordnete Fenster zentriert.

Popup Window Screenshot

Für verstehen, was meine Schuld ist, versuche ich Prisma Interaktivität Proben zu erkunden, und ich sehe es auch gleiches Problem. Wie kann ich dieses Problem lösen?

Antwort

2

ich bei dir entschuldigen wollen (mm8), weil meine Frage ist unvollständig , also ist deine Antwort auch unvollständig. Ich verstehe das nach Ihrer Antwort.

Warum Ihre Antwort nicht mein Problem lösen? Weil mein DataFeedManagerView die Breite = "960" und Höhe = "540" feste Länge haben muss. Es gibt ein Element-Steuerelement auf der linken Seite, wenn die Auswahl geändert wird. Es gibt eine Inhaltskontrolle in der Mitte und der Inhalt ändert sich dynamisch (natürlich ändert sich auch die Inhaltsgröße) gegenüber der Auswahl.

Verzögerte Detaillierung & Lösung. Erste xaml in meiner Frage von meiner ShellView, mein Popup-Fenster ist DataFeedManagerView, die Breite = "960" und Höhe = "540" feste Länge haben. Wenn ich das Popup-Fenster in der Größe verändere, wird es auf meine Benutzersteuerung zentriert. So kurz nur Breite & Höhe xaml Teile aus DataFeedManagerView löschen, wird es Stretch Popup Fenster Inhalt wie ich will. Aber nach dem Löschen, wenn Popup-Fenster auf dem Bildschirm angezeigt werden, ist die Größe zu groß und wieder möchte ich die Größe auf feste Werte einstellen. Um dies zu lösen, gebe ich auch einen Stil zum Popup-Fenster. Also ist die Lösung meines Problems gelöste feste Breite & Höhe Eigenschaften von DataFeedManagerView und ändern ShellView Xaml wie unten;

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

Ich hoffe, meine Frage & Antwort wird zu anderen, helfen. Vielen Dank.

1

Wie kann ich dieses Problem lösen?

In den offiziellen Prism-Beispielen muss nur die explizite Breite von CustomPopupView UserControl entfernt werden. Sie können dies tun, indem Sie die Breite auf double.NaN Einstellung:

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

Sie sollten für Ihre DataFeedManagerView zum gleichen Lage:

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