我有一个 WPF 窗口SizeToContent="Height"
。该窗口包含一个<Expander />
显示最近活动的列表。我想要的是,当扩展器扩展时,窗口的大小会按比例增长。隐藏后,窗口再次按比例调整大小。如果调整窗口大小,则扩展器及其包含的列表视图应该增大以使用新空间。 (不要介意那里的颜色可以帮助我弄清楚这一点):
普通视图
替代文本 http://www.deploylx.com/so/wpfexpander/Open.png http://www.deploylx.com/so/wpfexpander/Open.png
倒塌
替代文本 http://www.deploylx.com/so/wpfexpander/Closed.png http://www.deploylx.com/so/wpfexpander/Closed.png
调整大小至新空间
替代文本 http://www.deploylx.com/so/wpfexpander/Expanded.png http://www.deploylx.com/so/wpfexpander/Expanded.png
到目前为止,这效果很好。当<Expander />
调整窗口大小后折叠。列表视图只是隐藏,而不是窗口再次折叠:
调整大小后折叠
替代文本 http://www.deploylx.com/so/wpfexpander/Collapsed.png http://www.deploylx.com/so/wpfexpander/Collapsed.png
我的直觉告诉我Height
当窗口调整大小时,窗口的值被设置,从而覆盖SizeToContent
财产。那么,如何让窗口在调整大小后保持其大小适合内容行为呢?
当前的 XAML:
<Window x:Class="DeployLX.Licensing.Nlm.Admin.v3.DashboardWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Dashboard" Width="504" SizeToContent="Height" Height="275">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="E_xit" Command="{Binding Path=CloseCmd}" />
</MenuItem>
</Menu>
<Grid DockPanel.Dock="Top" Margin="8" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Grid.RowSpan="2" Grid.Row="0" Grid.Column="0" Margin="0,0,8,0">
<Rectangle Fill="Red" />
<TextBlock>ActiveCount</TextBlock>
</Grid>
<Grid Grid.Row="0" Grid.Column="1" Margin="0,0,0,4">
<Rectangle Fill="Green" />
<TextBlock>Authorization</TextBlock>
</Grid>
<Grid Grid.Row="1" Grid.Column="1" Margin="0,4,0,0">
<Rectangle Fill="Blue" />
<TextBlock>Authorization</TextBlock>
</Grid>
</Grid>
<Expander Header="Recent Activity" Margin="8" IsExpanded="True">
<ListView IsSynchronizedWithCurrentItem="True" MinHeight="100">
<ListView.View>
<GridView>
<GridViewColumn Header="Status"/>
</GridView>
</ListView.View>
</ListView>
</Expander>
</DockPanel>
</Window>
UPDATE:我尝试监听扩展器的 Collapsed 事件并重置 WindowsSizeToContent
财产。这几乎有效。它会导致窗口再次折叠,但是当再次展开时,它会恢复到原来的 100 像素高度。虽然存储和捕获这些信息是可行的,但它有点老套并且容易出错。