当前位置: 首页 > news >正文

关于wpf的自适应

案例代码:关于wpf的自适应-CSDN博客

1.案例申明

目前该案例是将自适应的代码放在自定义控件里面,将控件作为界面来使用,然后再将控件布置到界面,拉动界面的大小,可以实现布局的自动补偿。

2.自适应控件的xaml代码

<UserControl x:Class="WpfApp13.UserControl1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WpfApp13"mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"><!-- 使用Grid作为根布局容器 --><Grid><!-- 定义行和列的比例,使用*表示按比例分配剩余空间 --><Grid.RowDefinitions><RowDefinition Height="Auto"/><!-- 自动高度,适应内容 --><RowDefinition Height="*"/><!-- 占据剩余空间 --><RowDefinition Height="2*"/><!-- 占据剩余空间的2倍 --><RowDefinition Height="Auto"/><!-- 自动高度,适应内容 --></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><!-- 占据剩余空间 --><ColumnDefinition Width="2*"/><!-- 占据剩余空间的2倍 --><ColumnDefinition Width="Auto"/><!-- 自动宽度,适应内容 --></Grid.ColumnDefinitions><!-- 标题区域 --><Label Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Content="自适应布局演示" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold"Margin="10"/><!-- 内容区域1 --><Border Grid.Row="1" Grid.Column="0" Background="LightBlue" Margin="5" CornerRadius="5"><TextBlock Text="区域1 (1x)" HorizontalAlignment="Center" VerticalAlignment="Center"FontSize="16"/></Border><!-- 内容区域2 --><Border Grid.Row="1" Grid.Column="1" Background="LightGreen" Margin="5" CornerRadius="5"><TextBlock Text="区域2 (2x宽度)" HorizontalAlignment="Center" VerticalAlignment="Center"FontSize="16"/></Border><!-- 内容区域3 --><Border Grid.Row="1" Grid.Column="2" Background="LightSalmon" Margin="5" CornerRadius="5"><TextBlock Text="固定宽度" HorizontalAlignment="Center" VerticalAlignment="Center"FontSize="16"/></Border><!-- 跨多列的内容区域 --><Border Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Background="LightGoldenrodYellow" Margin="5" CornerRadius="5"><TextBlock Text="跨三列区域 (高度是上面的2倍)" HorizontalAlignment="Center" VerticalAlignment="Center"FontSize="16"/></Border><!-- 底部按钮区域 --><StackPanel Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" Orientation="Horizontal" HorizontalAlignment="Center"Margin="10"><local:UserControl2>111111111</local:UserControl2><Button Content="确定" Width="100" Margin="5" Padding="10,5"/><Button Content="取消" Width="100" Margin="5" Padding="10,5"/></StackPanel></Grid>
</UserControl>

3.grid应用于window界面

该模式,可以实现布局的自动调整,但是无法实现字体和空间的同等缩放。

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApp13" x:Class="WpfApp13.MainWindow"Title="自适应布局演示" Height="450" Width="800" MinWidth="400" MinHeight="300"><!-- 使用Grid作为根布局容器 --><Grid><!--<Viewbox Stretch="Uniform"><local:UserControl1 HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /></Viewbox>--><local:UserControl1 HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /></Grid></Window>

4.grid应用于window界面的效果

5.补充viewbox,除了可以自动布局适应,还能自动实现字体的缩放

在window的xmal补充viewbox

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApp13" x:Class="WpfApp13.MainWindow"Title="自适应布局演示" Height="450" Width="800" MinWidth="400" MinHeight="300"><!-- 使用Grid作为根布局容器 --><Grid><Viewbox Stretch="Uniform"><local:UserControl1 HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /></Viewbox></Grid></Window>

6.补充viewbox后的效果

http://www.dtcms.com/a/275440.html

相关文章:

  • 基于 Redisson 实现分布式系统下的接口限流
  • [特殊字符] 深入掌握 dsquery:Active Directory 高效查询与安全运维指南
  • sqli-labs靶场通关笔记:第7-8关 布尔盲注
  • Gemini CLI 代理问题解决[API Error: exception TypeError: fetch failed sending request]
  • 【Linux-云原生-笔记】数据库操作基础
  • 【机器学习|学习笔记】详解决策树CART算法,并对比ID3 C4.5和CART算法
  • 系统分析师-计算机系统-计算机系统概述存储系统
  • 内网穿透系列九:开源的网络穿透与组网工具 EasyTier,支持多种数据传输通道,去中心化,兼具高效与安全
  • 【Java八股文总结 — 包学会】(二)计算机网络
  • PyTorch的计算图是什么?为什么绘图前要detach?
  • 【设计模式】单例模式 饿汉式单例与懒汉式单例
  • 人工智能自动化编程:传统软件开发vs AI驱动开发对比分析
  • 云原生技术与应用-生产环境构建高可用Harbor私有镜像仓库
  • ​BRPC核心架构解析:高并发RPC框架的设计哲学
  • Whistle抓包
  • 【设计模式】桥接模式(柄体模式,接口模式)
  • 为什么有些PDF无法复制文字?原理分析与解决方案
  • Oxygen XML Editor 26.0编辑器
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十课——图像gamma矫正的FPGA实现
  • 定长子串中元音的最大数目
  • 大数据在UI前端的应用深化研究:用户行为数据的时序模式挖掘
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的营销直播质量提升策略研究
  • 【世纪龙科技】新能源汽车结构原理体感教学软件-比亚迪E5
  • HTTP 状态码详解
  • Apache HTTP Server 从安装到配置
  • 使用python 实现一个http server
  • 搭建云手机教程
  • 力扣面试150题--括号生成
  • S7-200 SMART CPU 密码清除全指南:从已知密码到忘记密码的解决方法
  • AI产品经理面试宝典第11天:传统软件流程解析与AI产品创新对比面试题与答法