2017-01-23 3 views
0

Я использую пользовательский 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

Для понять, что это моя вина, я стараюсь исследовать образцы интерактивность Prism и я вижу, есть та же проблема тоже. Как я могу решить эту проблему?

ответ

2

Я хочу извиниться перед вами (MM8), потому что мой вопрос является неполным , поэтому ваш ответ тоже неполный. Я понимаю, что после вашего ответа.

Почему ваш ответ не решает мою проблему? Потому что мой DataFeedManagerView, который имеет длину Width = "960" и Height = "540". При выборе выбора элемент управления элементами находится слева, в центре есть элемент управления содержимым, а его содержимое динамически изменяется (конечно, размер содержимого меняется тоже) и выбор.

Отложенные детализация & решение. Первый xaml в моем вопросе из моего ShellView, мое всплывающее окно DataFeedManagerView, которое имеет ширину = "960" и высоту = "540" фиксированную длину. Поэтому, когда я изменяю размер всплывающего окна, он будет сосредоточен на моем пользовательском контроле. Поэтому в скором времени удалите только ширину & элементов высотой 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> 

Я надеюсь, что мой вопрос & ответ будет помогать другим. Благодарю.

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> 
Смежные вопросы