10.WPF布局 - 实践
WPF 布局代码详细解析(带注释)
<!-- 主窗口定义 --><Windowx:Class="WPFNestingLayouts.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:WPFNestingLayouts"mc:Ignorable="d"Title="MainWindow"Height="350"Width="604"> <!-- 窗口尺寸设置 --><!-- 根布局:网格布局 --><Grid Background="AntiqueWhite"> <!-- 设置整个网格背景为古董白 --><!-- 行定义:5行等分高度 --><Grid.RowDefinitions><RowDefinition Height="*" /> <!-- 第1行:星号(*)表示等比分配剩余空间 --><RowDefinition Height="*" /> <!-- 第2行 --><RowDefinition Height="*" /> <!-- 第3行 --><RowDefinition Height="*" /> <!-- 第4行 --><RowDefinition Height="*" /> <!-- 第5行 --></Grid.RowDefinitions><!-- 列定义:单列占满宽度 --><Grid.ColumnDefinitions><ColumnDefinition Width="*" /> <!-- 唯一列:宽度占满整个网格 --></Grid.ColumnDefinitions><!-- 标题标签(第1行) --><LabelContent="Employee Info"FontSize="15"FontWeight="Bold"Grid.Column="0"Grid.Row="0"/> <!-- 位于第0列第0行 --><!-- 姓名输入区(第2行) --><StackPanelGrid.Column="0"Grid.Row="1"Orientation="Horizontal"> <!-- 水平堆叠面板 --><Label Content="Name"VerticalAlignment="Center" <!-- 垂直居中 -->Width="70"/> <!-- 标签固定宽度 --><TextBox Name="txtName"Text="Muhammad Moo"VerticalAlignment="Center"Width="200"> <!-- 文本框宽度200 --></TextBox></StackPanel><!-- ID输入区(第3行) --><StackPanelGrid.Column="0"Grid.Row="2"Orientation="Horizontal"><Label Content="ID"VerticalAlignment="Center"Width="70"/><TextBox Name="txtID" <!-- 注意:应命名为txtID更合理 -->Text="421"VerticalAlignment="Center"Width="50"> <!-- 较窄的文本框 --></TextBox></StackPanel><!-- 年龄输入区(第4行) --><StackPanelGrid.Column="0"Grid.Row="3"Orientation="Horizontal"><Label Content="Age"VerticalAlignment="Center"Width="70"/><TextBox Name="txtAge" <!-- 应命名为txtAge -->Text="32"VerticalAlignment="Center"Width="50"> <!-- 宽度与ID相同 --></TextBox></StackPanel><!-- 职位输入区(第5行) --><StackPanelGrid.Column="0"Grid.Row="4"Orientation="Horizontal"><Label Content="Title"VerticalAlignment="Center"Width="70"/><TextBox Name="txtTitle" <!-- 应命名为txtTitle -->Text="Programmer"VerticalAlignment="Center"Width="200"> <!-- 宽度与姓名相同 --></TextBox></StackPanel></Grid></Window>
关键设计解析:
网格布局结构:
- 5行等高分配(Height=“*”),单列占满宽度
- 每行放置一个水平StackPanel实现标签+文本框的组合
嵌套布局技巧:
控件设计特点:
- 垂直居中:所有控件设置
VerticalAlignment="Center"
- 宽度控制:
- 标签统一宽度70(保证对齐)
- 文本框分两种尺寸(50/200)
- 默认值:预填充了示例数据
- 垂直居中:所有控件设置
需要修正的问题:
- 命名不一致:建议修改为:
txtCity
→txtID
txtState
→txtAge
txtCountry
→txtTitle
- 属性拼写错误:
VerticalMoognment
应为VerticalAlignment
- 命名不一致:建议修改为:
布局效果:
+-----------------------------------+
| Employee Info (标题) | <- 第0行
+-----------------------------------+
| [Name] [Muhammad Moo ] | <- 第1行水平StackPanel
+-----------------------------------+
| [ID] [421] | <- 第2行
+-----------------------------------+
| [Age] [32] | <- 第3行
+-----------------------------------+
| [Title] [Programmer ] | <- 第4行
+-----------------------------------+
优化建议:
- 使用
Grid
替代StackPanel
实现更精确的字段对齐 - 添加
Margin
属性增加控件间距 - 为必填字段添加验证逻辑
- 使用
TextBlock
+TextBox
组合代替纯文本框标签
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/934231.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
基于MATLAB的路面裂缝检测识别
一、系统架构设计
1. 功能模块划分
graph TDA[图像采集] --> B[预处理模块]B --> C[裂缝检测引擎]C --> D[特征提取]D --> E[分类识别]E --> F[结果可视化]F --> G[数据存储]
2. 硬件配置建议模块
推…
使用qt读取系统字体库,并进行英文名称映射
映射函数:// 创建中文字体到英文名称的映射表
QMap<QString, QString> createFontMapping() {QMap<QString, QString> mapping;mapping[QString::fromLocal8Bit("宋体")] = "simsun.ttc&q…
gitlab配置aws的s3作为docker镜像的存储
编辑 /etc/gitlab/gitlab.rb 文件external_url http://192.168.60.118
registry_external_url http://192.168.60.118:5005
gitlab_rails[registry_enabled] = true
gitlab_rails[registry_host] = "192.168.60.…
shell脚本监控ssl证书到期时间
一、需求
说明:(1)读取域名列表文件。(2)获取域名到期时间,进行告警后邮件提醒。
#!/bin/bash
## 第1步 配置文件
# 颜色定义
RED=\033[0;31m
GREEN=\033[0;32m
YELLOW=\033[1;33m
BLUE=\033[0;34m
PURPLE=\033…
AI如何通过卫星图像识别刺猬栖息地
剑桥大学研究人员利用卫星图像和机器学习技术,通过识别黑莓灌木丛来绘制刺猬潜在栖息地地图,为保护这种濒危物种提供创新解决方案。AI如何通过卫星图像识别刺猬栖息地
你不能从太空中直接发现刺猬,但通过寻找黑莓灌…
04-补充mybatis-plus的Service接口
04-补充mybatis-plus的Service接口$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");常用方法查询相关方法以前是我们自己实现的Service接口和方法先在mp给我们…
LeetCode热题100-75、跳跃游戏
LeetCode热题100-75、跳跃游戏给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回…
rust 模块和引用
rust的模块声明有两种方式:
1、mod.rs文件方式
在 2018 年后的版本中已逐渐被新的模块系统取代,Rust 官方文档中已删除对 mod.rs 的介绍,主要因为该功能在 Rust 1.30 版本后被新的模块命名约定替代。
目录结构为:
…
moectf2025-reverse-wp
moectf2025-reverse-wp
upx
壳是什么?upx是什么?upx可以用来干什么?用自己的upx脱壳
upx -d +文件地址然后就去ida里面编译但是找不到main函数
我们直接shift+F12查看字符串然后点进去鼠标移到这里
按X
然后定位到主…
国标GB28181网页直播平台EasyGBS如何构建智慧社区一体化视频监控方案?
国标GB28181网页直播平台EasyGBS如何构建智慧社区一体化视频监控方案?随着科技的飞速发展,智慧社区的概念逐渐深入人心。智慧社区旨在通过先进的信息技术手段,实现社区的智能化管理和服务,提升居民的生活质量和社区…
完整教程:【论文阅读】纯视觉语言动作(VLA)模型:全面综述
完整教程:【论文阅读】纯视觉语言动作(VLA)模型:全面综述2025-10-10 16:09
tlnshuju
阅读(0)
评论(0) 收藏
举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…
TypeScript Declaration Merging(声明合并)使用说明
最近在进行前端开发的时候,为了拓展引用,使用了TS声明合并的特性,完整的了解了一下该特性,特此记录成笔记。
声明合并指在TypeScript里面,编译器将两个或者多个独立的相同名称的声明合并到一起。合并后的定义同时…
第七章 手写数字识别V5
# 优化:
# 新建Model类,将神经网络的结构定义、训练流程(前向/后向)和预测逻辑统一封装起来
# 何将权重更新的职责从网络层(Linear)中分离出来,交给优化器(SGD)来完成
# 使用动量梯度下降优化算法(MSGD)
# …
关于根据距离列表排序sql
关于根据距离列表排序sql//第一种 根据经纬度排序 $map = "1=1 ";if ($loadCode && $unloadCode) {$map .= " AND load_city_id = $loadCode and unload_city_id = $unloadCode";}…
2025年高适配铝型材厂家推荐:深圳市方达铝业领衔,3家企业覆盖多场景
随着科技的进步与工业的发展,铝型材作为一种轻质、高强度且耐腐蚀的材料,广泛应用于 3C 数码、智能家居、工业设备等多个领域。然而,市场上铝型材厂家众多,产品质量与服务水平参差不齐,给消费者的选择带来了困扰。…
注册c模块到lua中使用
#define REGISTER_CUSTOM_LIBRARY(name, lua_c_fn) \ int lua_c_fn(lua_State*); \ luaL_requiref(L, name, lua_c_fn, 0); \ lua_pop(L, 1) /* remove lib */
//注册c模块void open_custom_libs(lua_State* …