Ich versuche, ein Fenster anzuzeigen, das nicht explizit eine Höhe / Breite hat (beide Werte wurden weggelassen oder auf gesetzt Auto
). Ich vermutete, dass das Fenster seine Größe durch automatische Berechnung aller enthaltenen Benutzersteuerungsgrößen ermitteln würde, aber das funktioniert nicht wirklich!
Stattdessen bekomme ich ein großes Fenster mit Actualwidth
und Actualheight
Werte, die beide auf 512 gesetzt sind (?!?!)
Fensterdeklaration:
<Window x:Class="Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window3"
Height="Auto">
<StackPanel>
<Label>Window</Label>
</StackPanel>
</Window>
Anzeigen dieses Fensters als Dialog über:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click
Dim dlg As New Window3
dlg.ShowDialog()
End Sub
Gibt es dafür eine Lösung? Ich möchte die Größe meines Fensters nicht explizit festlegen, da viele Steuerelemente im Formular basierend auf Konstruktorparametern reduziert werden und der Versuch, die tatsächliche Größe des Formulars zu ermitteln, schwierig (und hässlich) wäre.
.WindowStartupLocation
Einstellung"CenterScreen"
Antworten:
Legen Sie die Eigenschaft des Fensters fest
SizeToContent="WidthAndHeight"
. Das sollte helfen.quelle
SizeToContent="WidthAndHeight"
;)Height="Auto"
undWidth="Auto"
nicht das Gleiche erreicht? Ich vermute, weil Fensterinhalte bei diesen Einstellungen nicht berücksichtigt werden.Alte Frage, aber eine aktualisierte Antwort:
Wie @ Muad'Dib in seiner Antwort vorschlug:
du solltest einstellen
SizeToContent="WidthAndHeight"
.Wenn die Größe des Fensterinhalts größer als die Bildschirmgröße ist, kann das Fenster vom Bildschirm überlaufen. Sie müssen also Folgendes berücksichtigen:
quelle
MaxHeight="400"
nicht respektiert wird? es wächst bis zum Bildschirmlimit?Nun, Sie können die Fensterhöhe nicht auf Auto einstellen. Dazu können Sie einen kleinen Trick verwenden, den Hauptcontainer des Hauptgitters benennen, seine Höhe auf Auto einstellen und dann die Fensterhöhe an die Höhe des Hauptgitters binden
quelle
Stellen Sie die Größe im aktuellen Bildschirm mit geladenen Ereignisfenstern ein
quelle