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 ...
随机推荐
- C# HttpWebResponse下载限速
在使用HttpWebResponse请求网络内容的时候,一般如下面这种方法: code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 非生产环境代码,请在实际使用时进行 ...
- 关于C#的可变长参数
可变参数 params===>> params int[] list,传入参数的类型必须是一种类型 static void Main(string[] args) { , , , ); C ...
- python socket 客服端服务端编程
客服端编程 import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error a ...
- uwp 获取系统字体库
原文:uwp 获取系统字体库 效果图: 要获取到字体库首先要在 NuGet 添加 SharpDx.Direct2D1 api: /// <summary> /// 获取系统字体库列表 / ...
- 使用checkpoint做代理服务器
version:R80.30 T200 Step 1:编辑刀片的属性,开启http/https代理,如下图: Step 2:配置访问策略,如下图: Step 3:配置客户端浏览器如下图: Step 4 ...
- Android零基础入门第30节:两分钟掌握FrameLayout帧布局
原文:Android零基础入门第30节:两分钟掌握FrameLayout帧布局 前面学习了线性布局.相对布局.表格布局,那么本期来学习第四种布局--FrameLayout帧布局. 一.认识FrameL ...
- C#添加应用路径到系统PATH变量
var dllDirectory = @"C:/some/path"; Environment.SetEnvironmentVariable("PATH", E ...
- 进程间通信 - 动态链接库中共享内存(利用DLL的2~3G的地址段空间)
前言 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据,以及其他的一些资源组成.32位系统的进程分配4G的虚拟地址空间.内存地址范围是0x00000000-0xFFFFFF ...
- Cocos2d-x 3.X Qt MinGW版本编译运行
自Cocos2d-x 3.X引入了C++ 11特性,在Windows平台上的支持就仅限VS 2012,其实还可以尝试MinGW版本,GitHub上有MinGW版本的Qt Creator工程. 地址:h ...
- c++类运算符重载遇到的函数形参问题
class A { public: A(int arg1, int arg2); ~A(); A &operator = ( A &other); A operator + ( A & ...