WPF入门到精通:2.WPF常用控件及布局

WPF(Windows Presentation Foundation)是一个用于构建 Windows 应用程序的框架,它提供了丰富的控件和布局方式,帮助开发者快速构建出现代化的应用程序。

WPF常用控件

  1. Button 控件 WPF 中最常用的控件之一。它由一个文本标签和一个可选图像定义。

    <Button Content="Click Me!" />
    <Button Content="Save" ImageSource="/Images/save.png" />
    
  2. Label 控件用于显示文本,它通常用于标识其他控件。
    <Label Content="Username:" />
    
  3. TextBox 控件允许用户输入文本。
    <TextBox />
    
  4. PasswordBox控件用于输入密码,它不会显示输入的字符。
    <PasswordBox />
    
  5. CheckBox控件允许用户选择是否选中一个选项。它通常用于开关选项。
    <CheckBox Content="I agree to the terms and conditions." />
    
  6. RadioButton 控件用于选择一组互斥的选项。只有一个选项可以被选中。
    <RadioButton Content="Male" GroupName="gender" />
    <RadioButton Content="Female" GroupName="gender" />
    
  7. ComboBox控件允许用户从一个下拉列表中选择一个选项。
    <ComboBox><ComboBoxItem Content="Red" /><ComboBoxItem Content="Green" /><ComboBoxItem Content="Blue" />
    </ComboBox>
    
  8. ListBox控件用于显示一个列出的项目,用户可以从中选择一个或多个。
    <ListBox><ListBoxItem Content="Item 1" /><ListBoxItem Content="Item 2" /><ListBoxItem Content="Item 3" />
    </ListBox>
    
  9. TabControl  标签页控件
    <Window x:Class="WpfApp1.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:WpfApp1"xmlns:sys="clr-namespace:WpfApp1.UserControls.TestControl;assembly=WpfApp1.UserControls" mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><TabControl SelectedIndex="1"><TabItem Header="测试页"><sys:TestControl /></TabItem><TabItem Header="测试页2"><sys:TestControl /></TabItem></TabControl></Grid>
    </Window>
    
  10. UserControl  用户控件
    <UserControl x:Class="WpfApp1.UserControls.TestControl"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:MES.Client.Test.UserControls"mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"><Grid></Grid>
    </UserControl>
    

注意:TabControl  标签页控件中TabItem 为对应用户控件,sys为引用命名空间名称,TestControl指向具体用户控件

WPF布局面板:

  1. 栅格布局(Grid) :栅格布局是 WPF 中最灵活和最强大的布局方式之一。它允许你将 UI 元素划分为行和列,并在每个单元格中放置 UI 元素。

  2. 堆叠布局(StackPanel):堆叠布局是一种简单的布局方式,它按照水平或垂直顺序将 UI 元素堆叠在一起。可以使用 Orientation 属性来控制堆叠的方向。

  3. 流式布局(WrapPanel):流式布局是一种自适应的布局方式,它按照水平或垂直顺序将 UI 元素排列在一行或一列中,当元素无法全部显示在行或列中时,它们将自动换行。

  4. 均匀布局(UniformGrid):均匀布局将 UI 元素均匀分布在一个网格中。可以使用 Rows 和 Columns 属性来控制行数和列数。

  5. DockPanel(停靠面板) - 它允许你将 UI 元素放置在容器的上、下、左、右或中心位置。

  6. Canvas(画布) - 可以将控件按照绝对位置进行放置,常用于绘制图形或自定义布局。

常用布局演示代码

<Window x:Class="WpfApp1.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:WpfApp1"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><Grid><Grid.RowDefinitions><!--①:绝对尺寸<RowDefinition Height="161" />②:自动尺寸<RowDefinition Height="auto" />③:按比例尺寸  <RowDefinition Height="*" />--><RowDefinition Height="*" /><RowDefinition Height="*" /><RowDefinition Height="*" /><RowDefinition Height="*" /><RowDefinition Height="*" /><RowDefinition Height="*" /></Grid.RowDefinitions><!--栅格布局:栅格布局是 WPF 中最灵活和最强大的布局方式之一。它允许你将 UI 元素划分为行和列,并在每个单元格中放置 UI 元素--><Grid    Grid.Row="0"><Grid.RowDefinitions><RowDefinition Height="*" /><RowDefinition Height="*" /><RowDefinition Height="*" /></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="*" /><ColumnDefinition Width="*" /></Grid.ColumnDefinitions><Button Grid.Row="0" Grid.Column="0" Content="1:"  /><Button Grid.Row="0" Grid.Column="1" Content="2:" /><Button Grid.Row="1" Grid.Column="0"  Content="3:" /><Button Grid.Row="1" Grid.Column="1" Content="4:" /><Button Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"  Content="5:"/></Grid><!--堆叠布局(StackPanel):堆叠布局是一种简单的布局方式,它按照水平或垂直顺序将 UI 元素堆叠在一起。可以使用 Orientation 属性来控制堆叠的方向--><StackPanel  Grid.Row="1" Orientation="Horizontal"><Button Content="Save" /><Button Content="Cancel" /></StackPanel><!--流式布局(WrapPanel):流式布局是一种自适应的布局方式,它按照水平或垂直顺序将 UI 元素排列在一行或一列中,当元素无法全部显示在行或列中时,它们将自动换行--><WrapPanel  Grid.Row="2" Width="200" Height="100"><Button Content="Button 1"   Width="100"/><Button Content="Button 2"  Width="100" /><Button Content="Button 3"  Width="100" /></WrapPanel><!--均匀布局(UniformGrid):均匀布局将 UI 元素均匀分布在一个网格中。可以使用 Rows 和 Columns 属性来控制行数和列数--><UniformGrid Grid.Row="3" Rows="2" Columns="2"  ><Button Content="Button 1" /><Button Content="Button 2" /><Button Content="Button 3" /><Button Content="Button 4" /></UniformGrid><!--DockPanel:DockPanel 是一种布局方式,它允许你将 UI 元素放置在容器的上、下、左、右或中心位置--><DockPanel  Grid.Row="4"  ><Button DockPanel.Dock="Top" Content="Top" /><Button DockPanel.Dock="Left" Content="Left" /><Button DockPanel.Dock="Right" Content="Right" /><Button DockPanel.Dock="Bottom" Content="Bottom" /><Button Content="Center" /></DockPanel><!--Canvas(画布) - 可以将控件按照绝对位置进行放置,常用于绘制图形或自定义布局--><Canvas  Grid.Row="5" ><Button Canvas.Left="10" Canvas.Top="10" Content="Button 1" /><Button Canvas.Left="50" Canvas.Top="20" Content="Button 2" /><Button Canvas.Left="90" Canvas.Top="30" Content="Button 3" /></Canvas></Grid></Grid>
</Window>

演示效果: 

总结

WPF 提供了大量的控件和布局方式,可以帮助快速构建应用程序。在选择控件和布局方式时,需要根据具体的需求进行选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/98393.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx反向代理、负载均衡

修改nginx.conf的配置 upstream nginx_boot{# 30s内检查心跳发送两次包&#xff0c;未回复就代表该机器宕机&#xff0c;请求分发权重比为1:2server 192.168.87.143 weight100 max_fails2 fail_timeout30s; server 192.168.87.1 weight200 max_fails2 fail_timeout30s;# 这里的…

菜鸟Vue教程 - 实现带国际化的注册登陆页面

初接触vue的时候觉得vue好难&#xff0c;因为项目中要用到&#xff0c;就硬着头皮上&#xff0c;慢慢的发现也不难&#xff0c;无外乎画个布局&#xff0c;然后通过样式调整界面。在通过属性和方法跟js交互。js就和我们写的java代码差不多了&#xff0c;复杂一点的就是引用这种…

G0第26章:微服务概述与gRPCprotocol buffers

Go微服务与云原生 1、微服务架构介绍 单体架构&#xff08;电商&#xff09; SOA架构&#xff08;电商&#xff09; 微服务架构&#xff08;电商&#xff09; 优势 挑战 拆分 发展史 第一代:基于RPC的传统服务架构 第二代:Service Mesh(istio) 微服务架构分层 核心组件 Summar…

css学习3(三种样式表与样式控制优先级)

1、外部样式表&#xff1a;当样式需要应用于很多页面时&#xff0c;外部样式表将是理想的选择。在使用外部样式表的情况下&#xff0c;你可以通过改变一个文件来改变整个站点的外观。每个页面使用 <link> 标签链接到样式表&#xff0c;也要放到<head>中。 2、外部…

快速排序 | C++|时间空间复杂度

1.概念 快速排序(QuickSort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分&#xff0c;其中一部分记录的关键字均比另一部分记录的关键字小&#xff0c;则可分别对这两部分记录继续进行排序&#xff0c;以达到整个序列有序的目的。 2.算法思想描述 1.进行一次划分&…

开源远程控制硬件 BliKVM v4测试 1000公里外远程重装系统

测试准备 测试时间&#xff1a;20230818 测试硬件&#xff1a;BliKVM v4 文档 BliKVM v4是一款生产就绪、即插即用的 KVM-over-IP 设备&#xff0c;为专业用户提供了远程服务器或工作站管理的便捷解决方案。 它基于Linux并且完全开源。 借助 BliKVM&#xff0c;您可以轻松打…

人工智能大模型加速数据库存储模型发展 行列混合存储下的破局

数据存储模型 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程toadb开源库 个人主页&#xff1a;我的主页 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 概述 在数据库的发展过程中&#xff0c;关…

改善神经网络——优化算法(mini-batch、动量梯度下降法、Adam优化算法)

改善神经网络——优化算法 梯度下降Mini-batch 梯度下降&#xff08;Mini-batch Gradient Descent&#xff09;指数加权平均包含动量的梯度下降RMSprop算法Adam算法 优化算法可以使神经网络运行的更快&#xff0c;机器学习的应用是一个高度依赖经验的过程&#xff0c;伴随着大量…

【CSS动画02--卡片旋转3D】

CSS动画02--卡片旋转3D 介绍代码HTMLCSS css动画02--旋转卡片3D 介绍 当鼠标移动到中间的卡片上会有随着中间的Y轴进行360的旋转&#xff0c;以下是几张图片的介绍&#xff0c;上面是鄙人自己录得一个供大家参考的小视频&#x1f92d; 代码 HTML <!DOCTYPE html>…

【idea】社区版idea运行Tomcat

使用 Smart Tomcat插件 配置运行&#xff1a;

解决Kibana(OpenSearch)某些字段无法搜索问题

背景 最近在OpenSearch查看线上日志的时候&#xff0c;发现某个索引下有些字段无法直接在界面上筛选&#xff0c;搜索到也不高亮&#xff0c;非常的不方便&#xff0c;就像下面这样 字段左侧两个筛选按钮禁用了无法点击&#xff0c;提示 Unindexed fields can not be searched…

MapReduce介绍

目录 ​一、什么是MapReduce 二、MapReduce 的设计思想 2.1 分而治之 2.2 构建抽象模型&#xff1a;Map和Reduce 2.3 隐藏系统层细节 三、MapReduce 的框架原理 3.1 MRv1工作原理 3.1.1 MRv1架构工作原理图 3.1.1.1 流程说明 3.1.1.1.1 作业的提交 3.1.1.1.2 作业的初始化 3…

React18TS项目:配置react-css-modules,使用styleName

他的好处不说了 网上一堆文章一个能打的都没有&#xff0c; 添加开发依赖 pnpm add -D dr.pogodin/babel-plugin-react-css-modules types/react-css-modules Babel Plugin "React CSS Modules" | Dr. Pogodin Studio 看dr.pogodin/babel-plugin-react-css-mo…

PyTorch学习笔记(十七)——完整的模型验证(测试,demo)套路

完整代码&#xff1a; import torch import torchvision from PIL import Image from torch import nnimage_path "../imgs/dog.png" image Image.open(image_path) print(image)# 因为png格式是四个通道&#xff0c;除了RGB三通道外&#xff0c;还有一个透明度通…

机器人制作开源方案 | 送餐机器人

作者&#xff1a;赖志彩、曹柳洲、王恩开、李雪儿、杨玉凯 单位&#xff1a;华北科技学院 指导老师&#xff1a;张伟杰、罗建国 一、作品简介 1. 场景调研 1.1项目目的 近年来&#xff0c;全国多地疫情频发&#xff0c;且其传染性极高&#xff0c;食品接触是传播途径之一。…

树莓派第一讲:入门那些事(系统烧录、外设连接)

目录 基本了解&#xff1a; 系统烧录&#xff1a; 连接外设&#xff1a; 基本了解&#xff1a; 树莓派4B是一款单板计算机&#xff0c;采用ARM架构处理器&#xff0c;配备4GB内存、Gigabit以太网口、多个USB接口、HDMI输出接口等。它具备1.5Ghz运行的64位四核处理器&#x…

Ribbon负载均衡

Ribbon与Eureka的关系 Eureka的服务拉取与负载均衡都是由Ribbon来实现的。 当服务发送http://userservice/user/xxxhtt://userservice/user/xxx请求时&#xff0c;是无法到达userservice服务的&#xff0c;会通过Ribbon会把这个请求拦截下来&#xff0c;通过Eureka-server转换…

回归预测 | MATLAB实现FA-SVM萤火虫算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现FA-SVM萤火虫算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现FA-SVM萤火虫算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍…

SPI ServiceLoader.load()无法加载实现类

[TOC](SPI ServiceLoader.load()无法加载实现类) 问题描述 项目是maven结构&#xff0c;其中的resources里结构如下&#xff1a; 解决方案 改为如下结构&#xff1a; 原因分析 问题出现的原因是&#xff1a;创建Directory时用点号隔开了 META-INFO.services ,结果META-…

spss--数据分析Log-Binonial模型

在横断面研究中&#xff0c;Log-binomial 模型能够获得研究因素与结局变量的关联强度指标患病率比&#xff08;PR&#xff09;&#xff0c;是一种研究二分类观察结果与多因素之间关系的重要方法&#xff0c;在医学研究等领域中得到了广泛的应用。 采用log-binomial 模型可直接估…