WPF根据窗口内容自动调整窗口大小

【wpf应用8】如何让WPF Grid控件根据屏幕尺寸自动调整 如何让WPF Grid控件根据屏幕尺寸自动调整 阅读详情

在创建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、运行效果

WinForm控件自适应(实现不同像素自适应,字体自适应,改变窗体大小自适应) 今天给大家上一道硬菜。本来不爱鸡汤,今天说两句:winform开发有一个缺陷就是不能实现界面的自适应,切换不同的分辨率,或者窗体大小改变就会出现窗体显示不全的问题。这就需要自己写一个方法来实现不同情况下的自适应,WPF比Winform的一个显著优势就是可以实现自适应。今天给大家一个可以实现自适应的方案。(本篇博客代码,为本人,在本地调试通过后,手敲到博客中,难免出现敲错的状况,勿喷。代码里面的注释是比较清楚的) 新建一个AutoSizeFormClass.cs文件 class AutoSizeForm 阅读详情

相关推荐

WPF-界面等比例自适应

今天在探索WPF响应式时,看到这个方法记录一下 只需要在你原有界面套上Viewbox和Canvas,Canvas要设定固定尺寸,这样就可以做一个等比缩小 <Viewbox Stretch="Fill"> <Canvas Width="1920" Height="1080"> 原界面 </Canvas> </Viewbox> 弊端 字体等也会同时缩小,像图

Maybe_ch的博客 2174

WPF 窗口大小自适应

在设置桌面不同分辨率以及较大DPI下,窗口如何显示的问题。 方案一 设置窗口最大值和最小值显示 通过对比当前屏幕的可显示区域,将窗口高宽最大值和最小值,设置为窗口的实际高宽(此例中仅设置高度) 界面设置 设置窗口内容自适应SizeToContent="WidthAndHeight" 添加ViewBox -- 设置默认不拉伸Stretch="None",当DPI超大时如超过1920*1...

weixin_30455365的博客 1906

c# WPF 程序窗口根据电脑屏幕的不同尺寸自动切换大小 主窗口显示问题

首先介绍MainWindow.xaml <Window x:Class="Sys.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ...

Hilaph的博客 2231

WPF 控件分辨率自适应问题

WPF 控件分辨率自适应问题

^@^lemon tea^@^ 3411

WPF 透明窗口可以调整尺寸(通过拖拽窗口边缘)

WPF 透明窗口可以调整尺寸(通过拖拽窗口边缘) 本文遵循 CC 4.0 BY-SA 版权协议 作者:絮大王 通过这篇文章,我们可以实现: 让WPF的透明窗口可以通过拖拽窗口的边缘,自由的调整尺寸。 我们可以通过拖拽窗口的上方,来移动窗口。 我们可以禁止窗口拖到屏幕边缘时自动最大化。 还可以等比例的改变窗口的大小。 还可以等比例的改变窗口中控件的大小 ...

xu1295921025的博客 2695

WPF控件 ViewBox:调整内容大小的神奇控件

ViewBox是WPF中一个简单但强大的布局容器,它能够根据可用空间自动缩放内容,保持内容的整体比例。在需要创建自适应界面或提供缩放功能的应用程序中,ViewBox是一个不可或缺的工具。通过合理使用ViewBox,你可以显著提升应用程序在不同屏幕尺寸和分辨率下的用户体验,让你的界面设计更加灵活和专业。试着在你的下一个WPF项目中使用ViewBox,你会发现它带来的神奇效果!

m0_53548081的博客 1248

wpf如何自动调整窗口大小以适合其内容

// Manually alter window height and width this.SizeToContent = SizeToContent.Manual; // Automatically resize width relative to content this.SizeToContent = SizeToContent.Width; // Automatically re...

weixin_30675967的博客 191

【WPF.NET开发】WPF中的窗口

用户通过窗口与 Windows Presentation Foundation (WPF) 应用程序交互。窗口的主要用途是托管使数据可视化并使用户能够与数据交互的内容。WPF 应用程序使用 Window类提供自己的窗口。本文先介绍Window,然后讲述在应用程序中创建和管理窗口的基础知识。本文使用从 C# 项目生成的 XAML。如果使用 Visual Basic,则 XAML 看上去可能有不同。这些差异通常出现在x:Class属性值上。

Coding life, Coding world, Coding feature. 1359

WPF中的Window窗体

XAML三个顶级元素: Window、UserControl(用户控件,布局的时候像窗体那样布局就可以 了)、Page把窗体以网页形式展现。而一个XAML页面里只能有一个顶级元 素。而顶级元素里面只能有一个子元素。因此要有布局控件。 Window窗体属性 1.窗口的外观 WPF中默认窗口框架的外观,主要取决于Icon、Title、WindowStyle、ResizeMode等属 性。 Icon 指定窗口的图标;   Title 指定窗口的标题;    WindowStyle指定窗口样式,有4个取值:    

weixin_44589643的博客 460

从零到飞:在Ubuntu 22.04上为你的无人机搭建PX4-Autopilot开发环境

本文详细指导在Ubuntu 22.04上搭建PX4-Autopilot开发环境,涵盖系统依赖安装、源码获取、编译目标选择及Gazebo仿真测试。通过优化构建过程和调试技巧,帮助开发者快速为无人机部署稳定的飞控系统,实现从仿真到实机的平滑过渡。

weixin_26878995的博客 488

matlab 图像合成_用MATLAB做图像合成加雾的处理

众所周知,现在有很多算法来对图像进行去雾处理。但反之,对图像增加雾的代码却少之又少,本代码就是基于Matlab实现了对图像的加雾处理。该方法可用做雾天图像的合成数据集。代码公开如下:clear;clc; % close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%i...

weixin_35719260的博客 2060

Wpf的Window属性

Wpf拥有三个顶级元素,分别是Window、UserControl、Page,而在这里我想介绍window窗口。 在wpf中,窗口有于Icon、Title、WindowStyle、ResizeMode等属性。下面来了解一下这些属性如何使用? Icon 指定窗口的图标,一般在页面开头应用: 代码: 效果图: Title 指定窗口的标题(这个一般主动有,然后自己把默认的该成自己需要的就行了); WindowStyle 指定窗口样式,有4个取值: 分别是None,无边框;(当ResizeMode

weixin_44583881的博客 490

华为防火墙介绍和原理,配置详细解析

在出向外网的流量中,我们使用默认路由来指定默认的出口,并且使用nat地址转换,而在外网中,我们使用ISIS协议来进行路由的学习和更新,让外网可以访问到dmz非军事化区域的server1服务器。并进行NAT转换,实现了内部IP地址和外部IP地址之间的映射,以便内部网络可以与外部网络进行通信。网络地址转换(NAT):防火墙可实现网络地址转换,将内部私有IP地址转换成公共IP地址,以隐藏网络拓扑结构,增加网络安全性。确定安全需求:根据企业的安全需求和策略,确定防火墙的配置目标和规则。

外游者 5096

WPF 装饰器Decorator 与 Adorner

WPF 装饰器Decorator 与 Adorner介绍与使用

lvxingzhe3的博客 2874

倍福--实现TCP/IP的配置

控制器为CX5120,需要和上位机做通信,选择TCP/IP的通讯方式,本文介绍TCP/IP通信的操作步骤。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 1.2. 串口调试助手 3 1.2.1. TCP调试通信助手 3 授权文件 3 2.1 Lib文件 3 2.2. CAB文件 4 PLC程序编写 4 3.1. 引入TCP/IP库文件 4 3.2. Client端程序 5 3.2.1. 建立相关变量 5 3.3.2. 编写连接功能块

weixin_41883890的博客 5730

基于FPGA的FIR数字滤波器设计

clear;close all fc=1/4;fs=5/16; %输入给定指标 Rp=3;As=60;Fs=2; f=[fc,fs];m=[1,0]; %计算remezord函数所需参数f,m,dev dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)]; [N,fo,mo,W]=remezord(f,m,dev,Fs); %确定remez函数所需参数 hn=remez(N,fo,mo,W);...

FPGA/MATLAB学习教程/源码/项目合作开发 9454

window窗体

XAML三个顶级元素: Window、UserControl(用户控件,布局的时候像窗体那样布局就可以了)、Page把窗体以网页形式展现。而一个XAML页面里只能有一个顶级元素。而顶级元素里面只能有一个子元素。因此要有布局控件。 如果窗口的ShowInTaskbar属性值为true,Hide不但隐藏窗口本身,同时隐藏其在任务栏 上的图标。 WindowState,窗口状态属性,有3个枚举值: Normal,正常; Maximized,最大化; Minimized,最

ITJavaScript的博客 288

基于Python的智能动漫更新监控爬虫系统:从原理到实战

本文详细介绍了如何使用Python构建一个智能化的动漫更新监控系统,涵盖从基础爬虫到高级自动化监控的全套解决方案。文章将深入探讨最新的网络爬虫技术,包括异步请求、反反爬策略、智能解析算法等,并提供完整的代码实现和性能优化方案。通过本系统,用户可以实时获取多个动漫平台的更新信息,并通过多种渠道接收通知。关键词:Python爬虫、动漫监控、自动化通知、异步爬虫、反反爬策略。

2201_76125261的博客 901

C# wpf 无边框窗口实现拖动调整大小

文章目录前言一、如何实现?1.继承Adorner2.使用Thumb3.实现拖动逻辑三、完整代码四、使用示例总结 前言 在《C# wpf Grid中实现控件拖动调整大小》中我们实现了Grid中的控件动态调整大小,对于自定义的无边框窗口也可以使用类似的方式实现。虽然能查到的方案有通过Window Api的和通过WindowChrome实现的,一个是对系统有依赖还一个是依赖.net版本,这里提供一种相对轻量的实现方法。 一、如何实现? 1.继承Adorner 通过装饰器的方式添加8个方位拖动区域在窗口上,这

codeofcc的博客 5847

Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(十九):微服务实战——Boot 4 + Spring Cloud 2026.x,构建高并发电商分布式系统

Component@Slf4j@Autowired// 白名单路径@Override// 白名单放行// 提取Token// 传递用户信息到下游服务.mutate().build();@Override// 最高优先级if (bearer!@Component技术点Boot 3 时代Boot 4 时代提升线程模型平台线程池(200线程上限)虚拟线程(百万级并发)50x+服务通信。

qq_17204557的博客 184

OpenHarmony RK3568 从 32 位切换到 64 位用户空间指南

修改了编译参数(如修复 Q5 后),但 ThinLTO 缓存中保留了旧参数编译的 bitcode。这是一种节省内存的设计(32 位指针占 4 字节 vs 64 位占 8 字节),但在某些场景下需要切换为纯 64 位。切换到 64 位用户空间后,CPU 全程运行在 AArch64 状态,不再需要 AArch32 兼容模式。内核本身已经是 64 位(aarch64),切换用户空间位数不影响内核。(32 位兼容层)在纯 64 位系统中不再需要,可以关闭以减小内核体积。这两个参数对 64 位编译毫无意义,配合。

程小二的博客 688

C# wpf 附加属性实现任意控件拖动调整大小

系列文章目录 第一节 Grid内控件拖动 第二节 Canvas内控件拖动 第三节 任意控件拖动 第四节 窗口拖动 第五节 附加属性实现任意拖动(本节) 文章目录系列文章目录前言一、如何实现?1.定义附加属性2.整合功能3.关联功能二、完整代码三、使用示例1.拖动控件2.拖动窗口总结 前言 前面几章讲了控件拖动的几种方法,根据不同的布局可以有不同的拖动方式。本章主要讲的是利用附加属性对几种拖动方式进行封装,实现复用性,否则直接注册事件的方式在同界面多个控件中是几乎没有复用性的,实现起来很不方便。通过将上

codeofcc的博客 7519

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# wpf Canvas中实现控件拖动调整大小

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

codeofcc的博客 5228

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# wpf Grid中实现控件拖动调整大小

文章目录前言一、如何操作?二、如何实现?1.继承Adorner2.使用Thumb3.实现拖动逻辑三、完整代码四、使用示例总结 前言 在《C# wpf Canvas中实现控件动态调整大小》中我们实现了Canvas中的控件动态调整大小,由于Grid也是可层叠布局,在Grid中也是可以实现动态调整大小的。 一、如何操作? 8个点方放置在控件的8个方位上,通过拖动这些点对控件进行拉伸或缩小,示意图如下: 二、如何实现? 1.继承Adorner 通过装饰器的方式添加8个点在控件上,这样既可以不影响控件布局,

codeofcc的博客 6568
上一篇: C#动态类Dynamic的使用
下一篇: WPF实现简单的颜色调色板功能
RunnerDNA
博客等级 码龄14年 575粉丝 97原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RunnerDNA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值