Center popup in XAML
Habe ich erstellt ein Popup mit dem folgenden code, aber ich kann nicht herausfinden, wie es mittig
Ich habe versucht, zu ändern automatisch die Marge auf Laufzeit, aber ich konnte nicht herausfinden, wie es zu tun, aber jemand hat eine Idee, wie man center popup?
Ist es nicht eine standard-dimension führen, die ich brauche zu globalisieren mein Programm
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" Name="MainGrid">
<Popup x:Uid="LoginPopup" IsOpen="True" Name="LoginPopup">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Margin="10" Grid.Column="0" Grid.Row="0" Text="App Name" Grid.ColumnSpan="2" Style="{StaticResource HeaderTextStyle}" />
<TextBlock Margin="10" Grid.Column="0" Grid.Row="1" Text="Username" Style="{StaticResource ResourceKey=SubheaderTextStyle}" />
<TextBox Margin="10" Grid.Column="1" Grid.Row="1" Name="InputUsername" />
<TextBlock Margin="10" Grid.Column="0" Grid.Row="2" Text="Password" Style="{StaticResource ResourceKey=SubheaderTextStyle}" />
<PasswordBox Margin="10" Grid.Column="1" Grid.Row="2" Name="InputPassword" />
<StackPanel Margin="10" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" Orientation="Horizontal">
<Button Name="Login" x:Uid="LoginPopupLogin" />
<Button Name="Cancel" x:Uid="LoginPopupCancel" />
</StackPanel>
</Grid>
</Popup>
</Grid>
UPDATE
Habe ich versucht mit user1603313 die Antwort von unten, aber es hat nicht den trick tun, wie es sagt die Größe des Rasters innerhalb des popup-NaN.
Ich habe auch versucht zu bewegen, die Methode in das Netz, aber es hat nicht den trick tun, entweder
Die Methode, die ich spreche, ist das mit dem raster ordnungsgemäß aktualisiert
private void LoginPopup_Loaded_1(object sender, RoutedEventArgs e)
{
LoginPopup.HorizontalOffset = (Window.Current.Bounds.Width - gdChild.ActualWidth) / 2;
LoginPopup.VerticalOffset = (Window.Current.Bounds.Height - gdChild.ActualHeight) / 2;
}
Wie ich gelesen habe, Flyout-Menüs ist nur für HTML
ah, es ist wahr. Flyout-Menüs nicht verwendet werden können xaml + c#/vb. Gut wirken 😉
InformationsquelleAutor The87Boy | 2012-12-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Lösung für Ihr problem. ich bin das umschreiben der xaml-code und zusammen mit der Modifikation und finden Sie die Erklärung nach dem code.
Hier habe ich Euch ein Ereignis
Loaded="LoginPopup_Loaded_1"
zu der xaml-Code des popup -Hier der event-code in C#
Erklärung :
HorizontalOffset wird der Abstand zwischen der linken Seite des Anwendung Fensters und der linken Seite des popup-Fenster.
Ähnlich vertikalen Versatz wird der Abstand zwischen dem oberen Rand des Fensters und oben auf das popup -
DA wir die Mitte ausrichten, so müssen wir subtrahieren davon die Hälfte der Breite und die Höhe des popup aus der die Höhe und Breite des Fensters der Anwendung ( in der Mitte des Dialogfensters ist die Hälfte der Entfernung von der popup vom oberen und linken Rand )
dem der code geschrieben ist in
Loaded="LoginPopup_Loaded_1"
Ereignis, da dieses Ereignis wird aufgerufen, wenn das element gerendert wird, die in der Anwendung Fenster und Gitter genommen, weil es der container-Raster alle child-Elemente.ich hoffe, dass m klar 🙂
Wie etwa die Größe des Rasters?
Und ist es möglich, zu laufen Geladen, wenn der Bildschirm gedreht wird?
in das loaded-Ereignis oder den Konstruktor ??
Müssen Sie rufen Sie LoginPopup.UpdateLayout() vor dem Zugriff auf ActualWidth und ActualHeight, ansonsten die Werte werden nicht gültig noch. Auch sollten Sie diese in der Geöffnet-Ereignis anstelle von das Loaded-Ereignis - ich war nicht in der Lage, um es an die Arbeit in das Loaded-Ereignis auch nach dem Aufruf von UpdateLayout().
InformationsquelleAutor Anobik
Re : Und ist es möglich, zu laufen Geladen, wenn der Bildschirm gedreht wird? – The87Boy 24 Minuten vor
Antwort ist ja, führen Sie den gleichen Satz von code durch die Schaffung einer Methode und rufen Sie die Methode auf
Window.Current.SizeChanged += Current_SizeChanged;
InformationsquelleAutor Anobik
über die " x:name und name-Attribut u gefragt, was ich erkläre gleich, wie das, was geschrieben steht in dem folgenden link,
x:name und name Unterschied silverlight
und gehen auch über diesen link für WPF
In WPF, was sind die Unterschiede zwischen x:Name und Name-Attribute?
Als pro mein Allgemeines Verständnis der Name ist eine Eigenschaft der Klasse (ex: Raster-oder TextBlock und viele mehr), aber Klassen, die nicht über ein name-Attribut, das zugegriffen werden muss, wie einige (ex: StoryBoard etc), so dass für diesen Zweck x:name bereitgestellt wird. Während die initializecomponent-Methode aufrufen, den x:name und name zugeordnet werden, um die Klasse mit
FindName(string)
Methode für Sie zugänglich geworden.was passiert nun, intern ist eine lange Geschichte kurz geschnitten
MainPage.xaml -> MainPage.g.ich.cs -> MainPage.xaml.cs
InformationsquelleAutor Anobik