2016-12-24 4 views
1

Ich kann diesen Fehler nicht herausfinden, also habe ich es auf die einfachste Version entkleidet, wo es immer noch passiert.UWP - Taste Flyout ist irgendwie Höhe gesperrt

Das ist mein XAML-Code ist:

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

Und dann habe ich ein Ereignis für die Seite:

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

So das erwartete Verhalten für diesen Code ist wie folgt: Nach dem Drücken der Taste Es öffnet sich ein Popup, das vertikal über das Fenster gespannt ist. Und das funktioniert einwandfrei, bis ich mein Fenster zu groß mache. Here's ein GIF von dem, was ich beschreibe.

Wie Sie sehen, denkt das Popup klar, dass es die Höhe des Fensters sein sollte, aber aus irgendeinem Grund hört es einfach auf zu erweitern und fügt eine Bildlaufleiste hinzu.

Habe ich hier gerade nichts gesehen? Oder haben diese Flyouts eine willkürliche maximale Höhe, von der ich noch nie gehört habe?

Antwort

1

Flyout hat eine maximale Höhenbegrenzung. In FlyoutPresenter styles and templates können Sie FlyoutPresenter hat eine MaxHeight Eigenschaft auf FlyoutThemeMaxHeight finden:

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

Und FlyoutThemeMaxHeight ist ein Thema Ressource repräsentiert 758:

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

Sie können versuchen, FlyoutPresenter ‚s MaxHeight-PositiveInfinity zurückgesetzt werden (was kann in XAML als einfach "Infinity") wie folgt festgelegt werden, dann sollte das Gitter vertikal über das Fenster gestreckt werden können.

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