WPF 入门笔记之基础
一、创建WPF程序


1. App.xaml 相当于窗体的配置文件
2. xmlns:xml名称空间的缩写
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<!--表示引入一组名称空间,presentation主要加载绘制界面相关的-->
3. xmlns:x:多个x表示名称空间的名字
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<!--xaml编译和解析文件相关的。WPF默认可以有一个没有名称的名称空间.(默认名称空间)-->
4. x:Class="MyWpfApp.MainWindow" 对应的是,这个xmal文件对应的xmal.cs文件中的MainWindow类
x:Class="MyWpfApp.MainWindow"<!--对应的是,这个xmal文件对应的xmal.cs文件中的MainWindow类-->
二、用户界面和赋值
1. 树形结构布局,引用自己的类
xmlns:local="clr-namespace:MyWpfApp"<!--引用当前的名称空间-->
namespace MyWpfApp
{
public class CurrentData
{
public CurrentData Data { get; set; } public string Name { get; set; }
}
}
在XAML中使用
<Window.Resources>
<local:CurrentData x:Key="test" Name=""/>
</Window.Resources>
2. Attribute=“Value”方式只能使用简单的字符串赋值,赋值的类型赋值不方便
<Grid>
<Rectangle Height="80" Width="100" Stroke="Black"/>
</Grid>
2.1 非字符串类型赋值
<Window.Resources>
<local:CurrentData x:Key="text" Name="t" Data="aaa" />
</Window.Resources>
首选创建一个配,继承于TypeConverter类来自于(System.ComponentModel),重写ConverterFrom 方法
第二用属性的形式标记在自定义类上
//第二步
[TypeConverterAttribute(typeof(NameToDataTypeConverter))]
public class CurrentData
{
public CurrentData Data { get; set; } public string Name { get; set; }
}
//第一步
public class NameToDataTypeConverter : TypeConverter
{
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string name = value.ToString();
CurrentData data = new CurrentData()
{
Name = name
};
return data;
}
}
3. 属性方式赋值,例如button
<Grid>
<!--这种用‘/’直接结尾的,叫做空标签。这个标签不具有内容-->
<Button Height="80" Width="200" Click="Button_Click1" />
<Button Height="80" Width="200" Click="Button_Click">
<!--标签的内容-->
<Button.Content>
<!--属性的方式赋值-->
<Rectangle Width="20" Height="20" Stroke="Black" Fill="Green"></Rectangle>
</Button.Content>
</Button>
</Grid>
4. 标签扩展的方式赋值
<Window.Resources>
<sys:String x:Key="stringvalue">string value</sys:String>
</Window.Resources>
<Grid>
<!--{}大括号表示使用标签扩展-->
<TextBlock Height="100" Text="{StaticResource ResourceKey=stringvalue}"></TextBlock>
</Grid>
三、事件处理器,代码后置,导入程序集和引用命名空间
1.事件基本模型

<Grid>
<Button Height="20" Name="button" Width="200" Content="button" Click="Button_Click"></Button>
</Grid>
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("");
}
}
<Button>:事件的拥有者.
Click="Button_Click":事件订阅
MainWindow:窗体是事件的响应者
private void Button_Click(object sender, RoutedEventArgs e):事件的处理器
事件的订阅可以用C#代码实现
public MainWindow()
{
InitializeComponent();
this.button.Click += Button_Click;
}
2. 导入程序集和引用其中的名称空间
WPF 入门笔记之基础的更多相关文章
- 1 TensorFlow入门笔记之基础架构
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- C#快速入门笔记(1)——基础语法
C#快速入门笔记(1)——基础语法 总体框架:
- WPF 入门笔记之控件内容控件
一.控件类 在WPF中和用户交互的元素,或者说.能够接受焦点,并且接收键盘鼠标输入的元素所有的控件都继承于Control类. 1. 常用属性: 1.1 Foreground:前景画刷/前景色(文本颜色 ...
- WPF 入门笔记之事件
一.事件路由 1. 直接路由事件 起源于一个元素,并且不能传递给其他元素 MouserEnter 和MouserLeave 就是直接事件路由 2. 冒泡路由事件 在包含层次中向上传递,首先由引发的元素 ...
- WPF 入门笔记之布局
一.布局原则: 1. 不应显示的设定元素的尺寸,反而元素可以改变它的尺寸,并适应它们的内容 2. 不应使用平布的坐标,指定元素的位置. 3. 布局容器和它的子元素是共享可以使用的空间 4. 可以嵌套的 ...
- Java入门笔记 01-Java基础语法
一.数据类型和运算符 1.注释可以提高程序的可读性.可划分为 单行注释 // 多行注释 /.../ 文档注释 /**...*/ 2.标识符的命名规则: 标识符必须以字母.下划线_.美元符号$开头. 标 ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- jQuery:自学笔记(1)——基础入门
jQuery:自学笔记(1)——基础入门 认识JQuery 1.jQuery概述 jQuery是一个快速.小巧 .功能丰富的JavaScript函数库.它可以实现“写的少,做的多”的目标. jQuer ...
- Python基础 小白[7天]入门笔记
笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...
随机推荐
- jquery 显示和隐藏的三种方式
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> & ...
- C#热敏打印图片 串口打印图片
原文:C#热敏打印图片 串口打印图片 如图,一步一步慢慢调出来的 //串口通信类 public System.IO.Ports.SerialPort serialPort = null; serial ...
- github page的两种类型
1. 什么是Github ? Github 官方主页 简单说,Github是一个基于git的社会化代码分享社区. 你可以在Github上创建免费的远程仓库(remote repository),分享你 ...
- seajs教程(一):基本用法
介绍 SeaJS 是一个适用于 Web 浏览器端的模块加载器.使用 SeaJS,可以更好地组织 JavaScript 代码. Sea.js 遵循 CMD 规范,模块化JS代码.依赖的自动加载.配置的简 ...
- Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化
原文:Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化 [函数名称] 简单统计法图像二值化 WriteableBitmap StatisticalThSegment(Wr ...
- Java虚拟机性能监控与调优实战
From: https://c.m.163.com/news/a/D7B0C6Q40511PFUO.html?spss=newsapp&fromhistory=1 Java虚拟机性能监控与调 ...
- 动态链接库(Dynamic Link Library)学习笔记(附PE文件分析)
转载:http://www.cnblogs.com/yxin1322/archive/2008/03/08/donamiclinklibrary.html 作者:EricYou 转载请注明出处 注 ...
- 前端 JS 修炼(第一天)包装对象、作用域、创建对象
1.js基本概念以及注意 直接量 :程序中直接使用的数据值.下面列出的都是直接量: 1 12 //数字 2 1.2 //小数 3 "hello world" //字符串文本 4 t ...
- 使用pjax实现类似github无刷新更改页面url
pjax=pushState+ajax,相信用过github的同学都知道,github部分页面采用了pjax这个项目来实现ajax无刷新加载的同时改变页面url.一起来学习一下这个插件吧. 我们都知道 ...
- js中prototype与__proto__区别
proto(隐式原型)与prototype(显式原型) 显式原型 explicit prototype property:每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数 ...