一、创建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. 1 TensorFlow入门笔记之基础架构

    ------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...

  2. C#快速入门笔记(1)——基础语法

    C#快速入门笔记(1)——基础语法 总体框架:

  3. WPF 入门笔记之控件内容控件

    一.控件类 在WPF中和用户交互的元素,或者说.能够接受焦点,并且接收键盘鼠标输入的元素所有的控件都继承于Control类. 1. 常用属性: 1.1 Foreground:前景画刷/前景色(文本颜色 ...

  4. WPF 入门笔记之事件

    一.事件路由 1. 直接路由事件 起源于一个元素,并且不能传递给其他元素 MouserEnter 和MouserLeave 就是直接事件路由 2. 冒泡路由事件 在包含层次中向上传递,首先由引发的元素 ...

  5. WPF 入门笔记之布局

    一.布局原则: 1. 不应显示的设定元素的尺寸,反而元素可以改变它的尺寸,并适应它们的内容 2. 不应使用平布的坐标,指定元素的位置. 3. 布局容器和它的子元素是共享可以使用的空间 4. 可以嵌套的 ...

  6. Java入门笔记 01-Java基础语法

    一.数据类型和运算符 1.注释可以提高程序的可读性.可划分为 单行注释 // 多行注释 /.../ 文档注释 /**...*/ 2.标识符的命名规则: 标识符必须以字母.下划线_.美元符号$开头. 标 ...

  7. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  8. jQuery:自学笔记(1)——基础入门

    jQuery:自学笔记(1)——基础入门 认识JQuery 1.jQuery概述 jQuery是一个快速.小巧 .功能丰富的JavaScript函数库.它可以实现“写的少,做的多”的目标. jQuer ...

  9. Python基础 小白[7天]入门笔记

    笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...

随机推荐

  1. CreateThread传递多个参数的方法(利用结构体的参数指针)

    很多朋友一直都在问CreateThread如何传递多个参数,CreateThread传递参数的方式是指针传递的,所以这里也可以利用指针来做!Demo 关键代码如下: type  TfrmTestThr ...

  2. 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置

    原文:使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置 摘要 讲解在IntelliJ IDEA中,如何进行Mysql数据库的配置 目录[-] 文章已针对IDEA 15做了一定的 ...

  3. Unity推荐设置(HoloLens开发系列)

    本文翻译自:Recommended settings for Unity Unity提供了一系列默认选项,这些选项能够适用于所有平台的一般情况.但是,Unity同样为HoloLens提供了一些特殊行为 ...

  4. Tensorflow-常见报错解决方案

    1. AttributeError: 'module' object has no attribute 'SummaryWriter' tf.train.SummaryWriter 改为:tf.sum ...

  5. C语言的setlocale和localtime函数(C++也可用)

    Example 1234567891011121314151617181920212223242526272829303132 /* setlocale example */ #include < ...

  6. 初探 C# 8 的 Nullable Reference Types

    溫馨提醒:本文提及的 C# 8 新功能雖已通過提案,但不代表將來 C# 8 正式發布時一定會納入.這表示我這篇筆記有可能白寫了,也表示您不必急著瞭解這項新功能的所有細節,可能只要瞄一下底下的「概要」說 ...

  7. admin组件的使用

    导进来的模板不能直接放到static里,要从其他的地方移动到static里,否则pycharm不能自动改变路径2.自关联class Userunfo(models.Model):    title=m ...

  8. Python连载14-random模块&函数式编程

    ​一.random模块 1.函数:random() (1)用法:获取0~1之间的随即小数 (2)格式:random.random() (3)返回值:随机0~1之间的小数 2.函数:choice() ( ...

  9. DHCP命令执行CVE-2018-1111漏洞复现

    DHCP命令执行_CVE-2018-1111漏洞复现 一.漏洞描述 在Red Hat Enterprise Linux多个版本的DHCP客户端软件包所包含的NetworkManager集成脚本中发现了 ...

  10. github 上传更新代码(最简单的方法)

    1.首先你需要一个github账号,还没有的朋友先去注册一个吧! GitHub地址:https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可 ...