WPF学习

1. 布局控件

Grid(网格)

Grid 是一种灵活的布局控件,可以将子元素安排在行和列的网格中。每个子元素可以指定它所在的行和列。

示例:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/> <!-- 自动适应内容 -->
        <RowDefinition Height="*"/>   <!-- 剩余空间分配 -->
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>   <!-- 剩余空间分配 -->
        <ColumnDefinition Width="2*"/>  <!-- 两倍的剩余空间分配 -->
    </Grid.ColumnDefinitions>

    <TextBlock Text="Row 0, Col 0" Grid.Row="0" Grid.Column="0"/>
    <TextBlock Text="Row 0, Col 1" Grid.Row="0" Grid.Column="1"/>
    <TextBlock Text="Row 1, Col 0" Grid.Row="1" Grid.Column="0"/>
    <TextBlock Text="Row 1, Col 1" Grid.Row="1" Grid.Column="1"/>
</Grid>

StackPanel(堆栈面板)

StackPanel 是一种布局控件,可以将子元素沿水平或垂直方向堆叠排列。

功能:

    •    简单的顺序排列
    •    适用于纵向或横向排列子元素

示例:

<StackPanel Orientation="Vertical"> <!-- 垂直排列 -->
    <TextBlock Text="Item 1"/>
    <TextBlock Text="Item 2"/>
    <TextBlock Text="Item 3"/>
</StackPanel>

<StackPanel Orientation="Horizontal"> <!-- 水平排列 -->
    <TextBlock Text="Item A"/>
    <TextBlock Text="Item B"/>
    <TextBlock Text="Item C"/>
</StackPanel>

DockPanel(停靠面板)

DockPanel 是一种布局控件,可以将子元素停靠在容器的边缘。

功能:

    •    子元素可以停靠在上下左右四个方向
    •    中心区域可以填充剩余空间

示例:

<DockPanel>
    <TextBlock Text="Top" DockPanel.Dock="Top"/> <!-- 停靠在顶部 -->
    <TextBlock Text="Bottom" DockPanel.Dock="Bottom"/> <!-- 停靠在底部 -->
    <TextBlock Text="Left" DockPanel.Dock="Left"/> <!-- 停靠在左侧 -->
    <TextBlock Text="Right" DockPanel.Dock="Right"/> <!-- 停靠在右侧 -->
    <TextBlock Text="Center"/> <!-- 默认填充剩余空间 -->
</DockPanel>

Canvas(画布)

Canvas 是一种布局控件,可以通过绝对定位子元素。

功能:

    •    子元素使用坐标进行绝对定位
    •    适用于需要精确控制位置的场景

示例:

<Canvas>
    <TextBlock Text="Top Left" Canvas.Left="10" Canvas.Top="10"/> <!-- 左上角 -->
    <TextBlock Text="Bottom Right" Canvas.Left="100" Canvas.Top="100"/> <!-- 右下角 -->
</Canvas>

2. 控件绑定(继续)

TextBlock(文本块)

TextBlock 是一种文本显示控件,用于显示只读文本。

功能:

    •    显示简单的文本内容
    •    支持数据绑定和格式化

示例:

<TextBlock Text="Hello, WPF!"/>
<TextBlock Text="{Binding Path=UserName}"/> <!-- 数据绑定 -->

TextBox(文本框)

TextBox 是一种用户输入控件,用于输入和编辑文本。

功能:

    •    输入单行或多行文本
    •    支持数据绑定和验证

示例:

<TextBox Width="200" Height="30" Text="{Binding Path=UserInput, Mode=TwoWay}"/> <!-- 双向数据绑定 -->

Button(按钮)

Button 是一种按钮控件,用户可以点击以触发操作。

功能:

    •    响应用户点击事件
    •    可以绑定命令(Command)

示例:

<Button Content="Click Me" Width="100" Height="30" Click="Button_Click"/>
<Button Content="Submit" Command="{Binding SubmitCommand}"/> <!-- 绑定命令 -->

CheckBox(复选框)

CheckBox 是一种允许用户选择或取消选择的控件。

功能:

    •    支持选中和未选中状态
    •    支持三态(选中、未选中、不确定)

示例:

<CheckBox Content="Agree to terms" IsChecked="{Binding Path=IsAgree, Mode=TwoWay}"/>

ComboBox(组合框)

ComboBox 是一种下拉列表控件,允许用户从预定义的选项中进行选择。

功能:

    •    显示下拉列表
    •    支持数据绑定

示例:

<ComboBox ItemsSource="{Binding Path=Options}" SelectedItem="{Binding Path=SelectedOption, Mode=TwoWay}"/>

ListBox(列表框)

ListBox 是一种列表控件,显示多个项,允许用户进行选择。

功能:

    •    显示项列表
    •    支持多选

示例:

<ListBox ItemsSource="{Binding Path=Items}" SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}"/>

3. 数据绑定

单向绑定

单向绑定将源属性的值传递给目标属性,但不会反向更新。

示例:

<TextBlock Text="{Binding Path=UserName}"/>

双向绑定

双向绑定允许源属性和目标属性互相更新。

示例:

<TextBox Text="{Binding Path=UserInput, Mode=TwoWay}"/>

命令绑定

命令绑定用于将UI事件绑定到ViewModel中的命令

示例:

<Button Content="Submit" Command="{Binding SubmitCommand}"/>

4. 样式和模板

定义样式

样式用于统一设置控件的外观。

示例:

<Window.Resources>
    <Style TargetType="Button">
        <Setter Property="Background" Value="LightBlue"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="FontSize" Value="14"/>
        <Setter Property="Margin" Value="5"/>
    </Style>
</Window.Resources>

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录OSPF配置,建立邻居失败的过程

1.配置完ospf后&#xff0c;在路由表中不出现ospf相关信息 [SW2]ospf [SW2-ospf-1]are [SW2-ospf-1]area 0 [SW2-ospf-1-area-0.0.0.0]net [SW2-ospf-1-area-0.0.0.0]network 0.0.0.0 Jul 4 2024 22:11:58-08:00 SW2 DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25 .1…

《昇思25天学习打卡营第9天|保存与加载》

文章目录 今日所学&#xff1a;一、构建与准备二、保存和加载模型权重三、保存和加载MindIR总结 今日所学&#xff1a; 在上一章节主要学习了如何调整超参数以进行网络模型训练。在这一过程中&#xff0c;我们通常会想要保存一些中间或最终的结果&#xff0c;以便进行后续的模…

《米小圈日记魔法》边看边学,轻松掌握写日记的魔法!

在当今充满数字化娱乐和信息快速变迁的时代&#xff0c;如何创新引导孩子们学习&#xff0c;特别是如何培养他们的写作能力&#xff0c;一直是家长和教育者们关注的焦点。今天就向大家推荐一部寓教于乐的动画片《米小圈日记魔法》&#xff0c;该系列动画通过其独特的故事情节和…

Elasticsearch 使用误区之二——频繁更新文档

在使用 Elasticsearch 时&#xff0c;频繁更新文档是一种常见误区。这不仅影响性能&#xff0c;还可能导致系统资源的浪费。 理解 Elasticsearch 的文档更新机制对于优化性能至关重要。 关于 Elasticsearch 更新操作&#xff0c;常见问题如下&#xff1a; ——https://t.zsxq.c…

word 转pdf 中图片不被压缩的方法

word 转pdf 中图片不被压缩的方法 法1&#xff1a; 调节word 选项中的图片格式为不压缩、高保真 法2&#xff1a; 1: word 中的图片尽可能使用高的分辨率&#xff0c;图片存为pnd或者 tif 格式&#xff08;最高清&#xff09; 2: 转化为pdf使用打印机器&#xff0c;参数如下…

Java面试题-锁

整体关于锁知识总结 下面是放大版&#xff1a; 补充&#xff1a;锁的粒度 忘记说了全局锁 &#xff1a; 1&#xff0c; 全局锁 flush tables with read lock ; // 对整个数据库上锁&#xff1b; 2&#xff0c; unlock tables; // 释放锁 但是我们一般不用&#xff1b;只有在数…

React@16.x(48)路由v5.x(13)源码(5)- 实现 Switch

目录 1&#xff0c;原生 Switch 的渲染内容2&#xff0c;实现 1&#xff0c;原生 Switch 的渲染内容 对如下代码来说&#xff1a; import { BrowserRouter as Router, Route, Switch } from "react-router-dom"; function News() {return <div className"p…

【Linux进阶】文件和目录的默认权限与隐藏权限

1.文件默认权限&#xff1a;umask OK&#xff0c;那么现在我们知道如何建立或是改变一个目录或文件的属性了&#xff0c;不过&#xff0c;你知道当你建立一个新的文件或目录时&#xff0c;它的默认权限会是什么吗&#xff1f; 呵呵&#xff0c;那就与umask这个玩意儿有关了&…

MFC+MySQL应用:配置

MFCMySQL 1. MFC UI界面生成2. 数据库和表生成创建数据库创建表添加表数据 3. VS中配置MySQL环境 1. MFC UI界面生成 链接: MFC使用方法 可以根据用户自身需求生成单文档、对话框等不同样式的UI界面。 2. 数据库和表生成 可以在workbench或者MySQL Server中创建数据库和表。…

SSM学生资助管理系统-计算机毕业设计源码30825

目 录 摘 要 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 学生资助管理系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 …

传统数据处理系统存在的问题

传统应用的数据系统架构设计时&#xff0c;应用直接访问数据库系统。当用户访问量增加时&#xff0c;数据库无法支撑日益增长的用户请求的负载&#xff0c;从而导致数据库服务器无法及时响应用户请求&#xff0c;出现超时的错误。 出现这种情况以后&#xff0c;在系统架构上就采…

【Ubuntu24.04无显示器远控】【Todesk远程桌面黑屏】【Linux虚拟显示器】解决方案

1️⃣版本 Ubuntu 24.04Todesk 4.7.2.0xserver-xorg-video-dummy 1:0.4.0-1build1 2️⃣安装配置虚拟显示器 sudo apt install xserver-xorg-video-dummy编辑/etc/gdm3/custom.conf&#xff0c;关闭Ubuntu24.04Wayland切换为X11 WaylandEnablefalse /usr/share/X11/xorg.con…

1-认识网络爬虫

1.什么是网络爬虫 ​ 网络爬虫&#xff08;Web Crawler&#xff09;又称网络蜘蛛、网络机器人&#xff0c;它是一种按照一定规则&#xff0c;自动浏览万维网的程序或脚本。通俗地讲&#xff0c;网络爬虫就是一个模拟真人浏览万维网行为的程序&#xff0c;这个程序可以代替真人…

PyPDF2合并PDF文件的高级应用:指定合并方式

本文目录 前言一、合并PDF的高级应用1、逻辑讲解2、合并效果图3、完整代码二、异常校验1、合并过程中的错误校验前言 本文我们主要来讲解一下PyPDF2合并PDF文件的高级应用,就是指定合并方式进行合并,构建函数支持模式选择,主要不管咋折腾,其实就是不想去付费买那个PDF编辑…

CS算法(二)—— 斜视SAR点目标仿真

SAR成像专栏目录 我们按照Cumming教授所著的《合成孔径雷达成像——算法与实现》7.6节的点目标参数进行仿真,斜视角设置为8,中心斜距改为1000km。先放最终的仿真结果: 1. 参数配置 在中心点和中心的的上下左右方向设置5个点目标 : function para=config_sar_para_cumming(…

技术市集 | 如何通过WSL 2在Windows上挂载Linux磁盘?

你是否常常苦恼&#xff0c;为了传输或者共享不同系统的文件需要频繁地在 Windows 和 Linux 系统之间切换&#xff0c;既耽误工作效率&#xff0c;也容易出错。 那么有没有一种办法&#xff0c;能够让你在Windows系统中像访问本地硬盘一样来操作Linux系统中的文件呢&#xff1…

分子AI预测赛笔记

#AI夏令营 #Datawhale #夏令营 Taks1 跑通baseline 根据task1跑通baseline 注册账号 直接注册或登录百度账号&#xff0c;etc fork 项目 零基础入门 Ai 数据挖掘竞赛-速通 Baseline - 飞桨AI Studio星河社区 启动项目 选择运行环境&#xff0c;并点击确定&#xff0c;没…

vue2+element-ui新增编辑表格+删除行

实现效果&#xff1a; 代码实现 &#xff1a; <el-table :data"dataForm.updateData"border:header-cell-style"{text-align:center}":cell-style"{text-align:center}"><el-table-column label"选项字段"align"center&…

析构函数和拷贝构造函数

文章目录 析构函数1.析构函数的定义&#xff1a;2.析构函数的语法&#xff1a;3.析构函数的特性&#xff1a; 拷贝构造函数1.拷贝构造函数的定义&#xff1a;2.拷贝构造函数的语法3.拷贝构造函数的特性(1)拷贝构造函数是构造函数的一个重载形式**(这个其实也很好理解&#xff0…

黑马点评DAY4|整体项目介绍、短信登录模块

项目整体介绍 项目功能介绍 项目结构 该项目前后端分离架构模式&#xff0c;后端部署在Tomcat服务器&#xff0c;前端部署在Niginx服务器上&#xff0c;这也是现在企业开发的标准做法。PC端首先向Niginx发起请求&#xff0c;得到页面的静态资源&#xff0c;页面再通过ajax向服…