2016-12-24 6 views
1

Я не могу понять эту ошибку, поэтому я раздели ее до самой простой версии, где это все еще происходит.UWP - Выдвижение кнопки как-то высотой заблокировано

Это мой XAML код:

<Grid> 
    <Button x:Name="button1" Content="Button" VerticalAlignment="Top"> 
     <Button.Flyout> 
      <Flyout Placement="Right"> 
       <Flyout.FlyoutPresenterStyle> 
        <Style TargetType="FlyoutPresenter"> 
         <Setter Property="Padding" Value="0"/> 
         <Setter Property="Margin" Value="0"/> 
         <Setter Property="BorderThickness" Value="0"/> 
        </Style> 
       </Flyout.FlyoutPresenterStyle> 
       <Grid Name="PopupGrid" Background="Aqua"/> 
      </Flyout> 
     </Button.Flyout> 
    </Button> 
</Grid> 

А потом у меня есть одно событие для этой страницы:

private void Page_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    PopupGrid.Height = Window.Current.Bounds.Height; 
} 

Таким образом, ожидаемое поведение для этого кода выглядит следующим образом: При нажатии на кнопку, открывается всплывающее окно, которое вертикально растянуто по всему окну. И это работает безупречно, пока я не сделаю свое окно слишком высоким. Here's GIF того, что я описываю.

Как вы можете видеть, всплывающее окно явно думает, что оно должно быть высотой окна, но по какой-то причине оно просто перестает расширяться в какой-то момент и добавляет полосу прокрутки.

Я просто ничего не вижу здесь? Или эти Flyouts имеют некоторую произвольную максимальную высоту, о которой я никогда не слышал?

ответ

1

Всплывающее устройство имеет ограничение максимальной высоты. В FlyoutPresenter styles and templates, вы можете найти FlyoutPresenter имеет множество MaxHeight собственности на FlyoutThemeMaxHeight:

<Setter Property="MinWidth" Value="{ThemeResource FlyoutThemeMinWidth}"/> 
<Setter Property="MaxWidth" Value="{ThemeResource FlyoutThemeMaxWidth}"/> 
<Setter Property="MinHeight" Value="{ThemeResource FlyoutThemeMinHeight}"/> 
<Setter Property="MaxHeight" Value="{ThemeResource FlyoutThemeMaxHeight}"/> 

И FlyoutThemeMaxHeight является темой ресурс представляет 758:

<x:Double x:Key="FlyoutThemeMaxHeight">758</x:Double> 

Вы можете попытаться сбросить FlyoutPresenter «s MaxHeight к PositiveInfinity (который может быть установлен в XAML как просто «Infinity»), как показано ниже, тогда сетка должна иметь возможность вертикально растягиваться по всему окну.

<Button x:Name="button1" VerticalAlignment="Top" Content="Button"> 
    <Button.Flyout> 
     <Flyout Placement="Right"> 
      <Flyout.FlyoutPresenterStyle> 
       <Style TargetType="FlyoutPresenter"> 
        <Setter Property="Padding" Value="0" /> 
        <Setter Property="Margin" Value="0" /> 
        <Setter Property="BorderThickness" Value="0" /> 
        <Setter Property="MaxHeight" Value="Infinity" /> 
       </Style> 
      </Flyout.FlyoutPresenterStyle> 
      <Grid Name="PopupGrid" Background="Aqua" /> 
     </Flyout> 
    </Button.Flyout> 
</Button>