【问题标题】:How to set initial size in WPF Window docked in DockPanel如何在停靠在 DockPanel 中的 WPF 窗口中设置初始大小
【发布时间】:2015-10-13 15:56:29
【问题描述】:

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

如何实现?

【问题讨论】:

    标签: c# wpf listview sizetocontent


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 第二个带有微调的解决方案对我有用,谢谢。
      猜你喜欢
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2021-11-09
      • 2010-10-11
      相关资源
      最近更新 更多