如何在停靠在DockPanel中的WPF窗口中设置初始大小

时间:2015-07-23 11:16:09

标签: c# wpf listview sizetocontent

我想设置listview的初始大小。 ListView停靠在DockPanel中,作为LastChildFill = true属性的最后一个孩子。 Window将SizeToContent设置为SizeToContent.Height。 我希望Window在用户调整大小时更改大小,我希望ListView分别更改其大小。 但是当Window打开时,我希望ListView高度为200。

如何实现它?

2 个答案:

答案 0 :(得分:1)

我的解决方案

<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;
}

答案 1 :(得分:0)

如果可能,计算列表框为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;
}
相关问题