簡體   English   中英

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

[英]How to set initial size in WPF Window docked in DockPanel

我想設置listview初始大小。 ListView作為最后一個子項停靠在DockPanel ,其最后一個子項具有LastChildFill = true。 窗口的SizeToContent設置為SizeToContent.Height。 我希望Window在用戶調整大小時更改大小,並且我希望ListView分別更改其大小。 但是我希望在窗口打開時ListView的高度為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="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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM