我想将初始大小设置为listview
. 作为属性 LastChildFill = true 的最后一个孩子ListView
停靠。DockPanel
窗口将 SizeToContent 设置为 SizeToContent.Height。我希望 Window 在用户调整大小时更改大小,我希望 ListView 分别更改其大小。但我希望 ListView 高度为 200,因为 Window 打开。
如何实现?
我想将初始大小设置为listview
. 作为属性 LastChildFill = true 的最后一个孩子ListView
停靠。DockPanel
窗口将 SizeToContent 设置为 SizeToContent.Height。我希望 Window 在用户调整大小时更改大小,我希望 ListView 分别更改其大小。但我希望 ListView 高度为 200,因为 Window 打开。
如何实现?
我的解决方案
<Window x:Class="WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="640" SizeToContent="Height"
Title="MainWindow" Loaded="Window_Loaded" >
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Top">Other Text</TextBlock>
<ListView Name="listbox" />
</DockPanel>
</Window>
在后面的代码中:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
SizeToContent = System.Windows.SizeToContent.Manual;
Height = 480;
}
如果可能,计算列表框为 200 时所需的窗口高度。然后只需将窗口的高度设置为该数字,如下所示:
<Window x:Class="WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="225"
Title="MainWindow" >
<DockPanel LastChildFill="True" VerticalAlignment="Stretch">
<TextBlock DockPanel.Dock="Top">Other text</TextBlock>
<ListView BorderBrush="Orange" VerticalAlignment="Stretch" />
</DockPanel>
</Window>
如果这是不可能的(例如,您事先不知道其他元素的大小),请执行以下操作:
<Window x:Class="WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" SizeToContent="Height"
Title="MainWindow" Loaded="Window_Loaded" >
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Top">Other Text</TextBlock>
<ListView BorderBrush="Orange" Name="listbox" Height="200" />
</DockPanel>
</Window>
在后面的代码中:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Height = ActualHeight;
SizeToContent = System.Windows.SizeToContent.Manual;
listbox.Height = Double.NaN;
}