Во-первых, я новичок в дизайне WPF. Во всяком случае, у меня есть расширитель, содержащий список, расположенный в нижней части моего окна. Когда расширитель сведен к минимуму, я хочу, чтобы первые два элемента в списке были видимыми, но когда он максимизирован, я хочу, чтобы он занимал всю высоту экрана. Я не уверен, как это сделать, и я буду очень признателен за любые намеки. Ниже приведен код, с которым мне приходится иметь дело до сих пор.Expander полная высота окна
<Window x:Class="WPFPlay.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="300"
Width="300"
DataContext="{Binding Main, Source={StaticResource Locator}}" SizeToContent="Manual">
<Window.Resources>
<ControlTemplate x:Key="VerticalExpander" TargetType="{x:Type Expander}">
<Border Name="ContentBorder" Width="0">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter TargetName="ContentBorder" Property="Width" Value="Auto" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<ControlTemplate x:Key="HorizontalExpander" TargetType="{x:Type Expander}">
<Border Name="ContentBorder" Width="0">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter TargetName="ContentBorder" Property="Height" Value="Auto" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
<Grid>
<DockPanel LastChildFill="True">
<Grid DockPanel.Dock="Right">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1" Orientation="Vertical">
<Button Name="B1" Content="+" Click="B1_Click" />
</StackPanel>
<DockPanel LastChildFill="True">
<Grid Grid.Column="0" DockPanel.Dock="Right" HorizontalAlignment="Right">
<Expander Name="MainExpander1" Template="{StaticResource VerticalExpander}" IsExpanded="False">
<Border CornerRadius="6" BorderBrush="Gray" Background="LightGray" BorderThickness="2">
<StackPanel>
<Label Content="Document1"/>
<Label Content="Document2"/>
<Label Content="Document3"/>
</StackPanel>
</Border>
</Expander>
</Grid>
</DockPanel>
</Grid>
<WrapPanel HorizontalAlignment="Center" DockPanel.Dock="Top">
<TextBlock FontSize="14">
<Bold>
<Run>
Header + Labels etc
</Run>
</Bold>
</TextBlock>
</WrapPanel>
<StackPanel DockPanel.Dock="Bottom">
<Expander VerticalAlignment="Stretch" Name="StatusBarExpander" ExpandDirection="Up" IsExpanded="False">
<StackPanel>
<ListBox>
<ListBoxItem Content="xxxxxxxxxxxxxxxxxxxx" />
<ListBoxItem Content="yyyyyyyyyyyyyyyyyy" />
<ListBoxItem Content="zzzzzzzzzzzzzzzzzzzz" />
</ListBox>
</StackPanel>
</Expander>
</StackPanel>
<StackPanel DockPanel.Dock="Left">
<Button Content="button1"/>
<Button Content="button2"/>
<Button Content="button3"/>
<Button Content="button4"/>
</StackPanel>
<!-- Centre of it all!!!-->
<ContentControl />
</DockPanel>
</Grid>
привет, спасибо за ответ. Я попытался настроить VerticalAlignment и VerticalContentAlignment на растяжение, но расширитель не растягивается до высоты всего экрана. Он выходит не выше нижней части ContentControl, который у меня есть в центре экрана. Также есть панель для док-станции слева, справа и сверху экрана. – user1698316
Может быть, вы можете опубликовать свой полный xaml здесь, чтобы Ican мог использовать его лучше. –
Полный xaml, размещенный выше в соответствии с запросом. Большое спасибо. Примечание: B1_Click находится в коде позади, и он просто скрывает или показывает расширитель в правой панели док-станции. – user1698316