Ich versuche, die vertikale Strecke zu arbeiten, wie erwartet ich WPF, aber aus irgendeinem Grund braucht es nur den Raum, den es benötigt, und nicht den verfügbaren Platz.WPF, vertikales Strecken funktioniert wie erwartet!
Zuerst verwende ich WPF mit C# und Prism.
In der Shell.xaml (Haupt xaml für die Anwendung) habe ich ein Raster mit 2 Spalten und einer Zeile. Die Idee ist, eine Seitenwand und einen Haupt-App-Bereich zu haben. Das Haupt-App-Bereichsraster ist auf Auto Width und Auto Height eingestellt. Dies funktioniert wie erwartet, und es skaliert, um die gesamte Anwendung in Höhe und Breite anzupassen.
Dann verwende ich Prisma, um die Ansicht (als UserControl-Komponente) in den Haupt-App-Bereich einzufügen. Das UserControl wird auch auf Auto Width und Height festgelegt, und die HorizontalAlignment und die VerticalAlignment werden auf die Standardeinstellungen in Expression Blend festgelegt, um zu strecken!
Das prisma geladene UserControl erstreckt sich jedoch nur in der Breite und nicht in der Höhe! Indem ich eine Hintergrundfarbe für visuelles Feedback gebe, kann ich sehen, dass es nur den vertikalen Raum benötigt, und nicht die gesamte verfügbare Fläche!
Was könnte die Lösung dafür sein? Ich habe versucht, alle Einstellungen zu durchlaufen und sie manuell zu Width und Height Auto, Horizontal und Vertical Alignment zu Stretch zu überschreiben, aber nichts scheint zu funktionieren wie erwartet!
Einige Code: (Shell.xaml)
<Window Height="1140" Width="1450">
<Grid Margin="0" Background="White">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Background="#FFEEEEEE" Grid.Column="0" Grid.Row="0">
</Grid>
<ItemsControl Width="Auto" Height="Auto" Grid.Row="0" Grid.Column="1" Name="MainRegion" cal:RegionManager.RegionName="MainRegion" Padding="10" Margin="10, 0, 0, 0" Background="#FFFFFFD5" />
</Grid>
</Grid>
</Window>
(Ansicht, die die Mutterhöhe erben sollte):
<UserControl Width="Auto" Height="Auto" Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!-- I want this to take the full width and height of the parent -->
</UserControl>
in der Art und Weise Das ist also eine Verjährungsfrist die Ansichten in geladen werden Das Haupt-Xaml, oder ist das eine UserControl-Einschränkung oder etwas anderes, das ich nicht verstehe?
Nur um zu klären; Ich sehe die Hintergrundfarbe von ItemsControl, die in Shell.xaml definiert ist und sowohl Horizontal als auch Vertikal dehnt, aber nicht den Hintergrund der in ItemsControl geladenen Ansicht.
Beachten Sie, dass ich einige der XAML entfernt habe, um den Punkt leichter zu verstehen!
Danke!
Sie können dies als die Antwort markieren. –
ja, an einem Tag, da es meine eigene Antwort ist –
Wenn Sie nur ein Element zeigen, warum nicht ein ContentControl anstelle eines ItemsControl verwenden. Angenommen, Sie legen nicht absichtlich mehrere Gegenstände übereinander. – jpierson