在创建WPF窗体时,如果固定窗体宽高,在要显示内容很少或者很多的情况下,窗体布局就会显得不怎么好看。如果能根据窗口内容自动调整窗口大小会显得比较适宜,这时我们需要用到Window.SizeToContent属性。
下面以固定宽度,高度可变为例,新建一个WPF窗体应用程序SizeToContentDemo。
1、窗体xaml
<Window x:Class="SizeToContentDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SizeToContentDemo"
mc:Ignorable="d"
WindowState="Normal" WindowStartupLocation="CenterScreen" ResizeMode="NoResize"
Title="SizeToContentDemo" Window.SizeToContent="Height" Width="500" Loaded="Window_Loaded">
<Grid x:Name="Grid_Content" Margin="20,20,20,30">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="32"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical">
<TextBlock Text="提示" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="#333" FontSize="18" FontWeight="Black" />
<TextBlock x:Name="ContentText" Text="提示内容" FontSize="12" Foreground="#666666" Margin="30,20,30,30" HorizontalAlignment="Center"
TextAlignment="Center" VerticalAlignment="Top" TextWrapping="Wrap"/>
</StackPanel>
<UniformGrid Rows="1" Width="300" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Bottom">
<Button x:Name="SureBtn" Content="确定" Height="32" VerticalAlignment="Center" Margin="0,0,8,0" Click="SureBtn_Click"/>
<Button x:Name="CancelBtn" Content="取消" Height="32" VerticalAlignment="Center" Margin="8,0,0,0"/>
</UniformGrid>
</Grid>
</Window>
2、交互逻辑
using System;
using System.Windows;
namespace SizeToContentDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.ContentText.Text = "是否关闭此窗体?";
//this.ContentText.Text = "这是一个非常严重的误操作,继续运行将产生未知错误!" + "\r\n" + "要获取详细信息请与管理员联系。" + "\r\n" + "错误码:001" + "\r\n" + "是否关闭该程序?";
this.Height = Grid_Content.ActualHeight;
}
private void SureBtn_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}
3、运行效果


本文介绍了如何在WPF中利用Window.SizeToContent属性实现窗体根据内容自动调整大小的功能,以达到更好的布局效果。通过示例代码展示了如何创建一个固定宽度、高度可变的窗体,并演示了其运行效果。
4453

被折叠的 条评论
为什么被折叠?



