一、创建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. golang并发编程的两种限速方法

    引子 golang提供了goroutine快速实现并发编程,在实际环境中,如果goroutine中的代码要消耗大量资源时(CPU.内存.带宽等),我们就需要对程序限速,以防止goroutine将资源耗 ...

  2. WPF MVVM+EF增删改查 简单示例(二) 1对1 映射

    WPF MVVM+EF增删改查 简单示例(一)实现了对学生信息的管理. 现在需求发生变更,在录入学生资料的时候同时需要录入学生的图片信息,并且一名学生只能有一张图片资料.并可对学生的图片资料进行更新. ...

  3. MVVM 下 ContextMenu的命令绑定

    原文:MVVM 下 ContextMenu的命令绑定 由于ContextMenu不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext=" ...

  4. Qt SizePolicy 属性(每个控件都有一个合理的缺省sizePolicy。QWidget.size()默认返回值是(640, 480),QWidget.sizeHint()默认返回值是(-1, -1))

    控件的sizePolicy说明控件在布局管理中的缩放方式.Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合 所有的布局,开发人员经常需要改变窗体上的某些控件的sizeP ...

  5. NET C#创建WINDOWS系统用户

    原文:NET C#创建WINDOWS系统用户   /前提是当前用户有相应的权限 /WinNT用户管理 using System; using System.DirectoryServices;  na ...

  6. 如何作为一个优秀的ERP实施顾问

    原文地址:如何作为一个优秀的ERP实施顾问作者:天思软件 作一个优秀的ERP实施顾问无论是天思.金蝶,用友,还是其他业务软件.实施顾问的发展道路都差不多. 1.初级实施顾问,中级实施顾问,高级实施顾问 ...

  7. Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)

    活动目录Active Directory是用于Windows Server的目录服务,它存储着网络上各种对象的有关信息,并使该信息易于管理员和用户查找及使用.Active Directory使用结构化 ...

  8. QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)

    QT中获取选中的radioButton的两种方法   QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...

  9. 【Linux】Linux下设备网卡以及硬件管理等

    这是Linux下网络硬件管理的基础知识,虽然平时用到的可能比软件的少一点,但是作为基础命令,还是需要记住,以免用时又得查询. 本文参考官方文档:https://wiki.ubuntu.com.cn/% ...

  10. 关于客户端javascript的理解及事件浅析

    1,核心JavaScript和客服端JavaScript都有一个单线程执行模型.脚本和事件处理程序在同一时间只能执行一个,没有并发性.这样保持了js编程的简单性. 2,document的定义:一些呈现 ...