2017-03-15 2 views
2

J'implémente un Flyout dans une application UWP comme vous pouvez le voir sur l'image ci-dessous. Je veux l'AutoSuggestBox dans le Flyout pour apparaître dans (et remplir) le PageHeader, mais il apparaît ci-dessous. ScreenshotXAML UWP Flyout positionnement

Ceci est mon XAML:

<Button x:Name="searchButton" Margin="0" Padding="0" BorderThickness="0" RelativePanel.AlignBottomWith="pageHeader"> 
     <Button.Content> 
      <FontIcon Height="48" Width="48" Glyph="&#xE094;"/> 
     </Button.Content> 
     <Button.Flyout> 
      <Flyout> 
       <Flyout.FlyoutPresenterStyle> 
        <Style TargetType="FlyoutPresenter"> 
         <Setter Property="Padding" Value="0"/> 
         <Setter Property="BorderThickness" Value="0"/> 
         <Setter Property="HorizontalAlignment" Value="Right"/> 
         <Setter Property="Height" Value="40"/> 
         <Setter Property="VerticalAlignment" Value="Top"/> 
        </Style> 
       </Flyout.FlyoutPresenterStyle> 
       <StackPanel Margin="0" VerticalAlignment="Top"> 
        <AutoSuggestBox x:Name="innerSearchBox" PlaceholderText="Search" VerticalAlignment="Top"/> 
       </StackPanel> 
      </Flyout> 
     </Button.Flyout> 
    </Button> 

Comment puis-je faire le AutoSugesstBox apparaissez dans et remplir le PageHeader?

+0

Voulez-vous dire comme la façon dont la recherche dans l'App Store se comporte? – erotavlas

+0

Oui @erotavlas, exactement! – Yvder

+0

Je pense que vous devriez essayer un Popup à la place, que vous pouvez mettre à côté de votre bouton dans la forme que vous voulez, contrairement à un flyout qui est une sorte d'infobulle ou comme une petite fenêtre séparée. – Neme

Répondre

0

Définissez le placement comme gauche pour Flyout.

<Flyout Placement="Left"> 

Si vous voulez faire le AutoSuggestBox pour couvrir toute la largeur de l'application, définissez la largeur de la AutoSuggestBox à la largeur ApplicationView.

Vous pouvez le faire en

public MainPage() 
{ 
    this.InitializeComponent(); 
    ApplicationView.GetForCurrentView().VisibleBoundsChanged += MainPage_VisibleBoundsChanged; 
    var bound = ApplicationView.GetForCurrentView().VisibleBounds; 
    innerSearchBox.Width = (int)bound.Width - 48;  //48 is the size of the button 
} 

private void MainPage_VisibleBoundsChanged(ApplicationView sender, object args) 
{ 
    var bound = ApplicationView.GetForCurrentView().VisibleBounds; 
    innerSearchBox.Width = (int)bound.Width - 48; 
}