WPF01(xaml)

XAML:(转自http://www.cnblogs.com/huangxincheng/archive/2012/06/17/2552511.html)

复制代码
<Window x:Class="WpfApplication1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="350" Width="525"><Grid></Grid>
</Window>
复制代码

 然后我们来对比一下webform中的page默认生成页面

复制代码
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">4 <html xmlns="http://www.w3.org/1999/xhtml">5 <head runat="server">6     <title></title>7 </head>8 <body>9     <form id="form1" runat="server">
10     <div>
11     </div>
12     </form>
13 </body>
14 </html>
复制代码

 

我们发现xaml很像xml结构,是的,它是一种遵循xml规范的界面描述语言。

 

一:xaml简述

   首先我默认大家都是熟悉webform的开发者。

  1:x:Class

       这个标记在webform中有对应的标记吗?有的,也就是这里的CodeBehind。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

  2:xmlns

      这个在webform中也有对应标记吗?首先我们要知道xmlns是干嘛的?哦,导入命名空间用的,那我们马上就想到webform中的对应标记import。

<%@ Import Namespace="System.IO" %>

 那么下一个问题就是两者有什么不同吗?我们知道webform中导入命名空间需要一个一个的导入,4个命名空间就要写4个import,而xaml可以做到多

个命名空间做为一个导入。

 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

其实也就导入了如下4个wpf开发必备的dll,这个命名空间也是xaml中默认的命名空间。

 

3:xmlns:x

    如果我们需要导入一些自定义的命名空间,那么我们就需要加上用“: + 自定义名称”的形式,这里微软导入了一个自定义的命名空间。

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   下面我们也来导入一个命名空间,实际开发中我们当然我们不会做成url的形式,这里我就取名为sys前缀

复制代码
<Window x:Class="WpfApplication1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:sys="clr-namespace:System.IO;assembly=mscorlib"Title="MainWindow" Height="350" Width="525"><Grid>   </Grid>
</Window>
复制代码

4:Grid

    我们都知道在n年前的html网页布局中都采用table的形式,table嵌套table,table跨行跨列等手段构建了漂亮的网页,这种排版思路也应用到了wpf中。

<1>:划分位置

      我们画个两行两列的界面布局,这里我们只要将”鼠标“放在”红色方框“中,就会出现小三角,我们点击就可生成一个分割线,红色小圈圈标记着“行列”

的分割比列。

然后我们看一下生成的代码

复制代码
<Window x:Class="WpfApplication1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:sys="clr-namespace:System.IO;assembly=mscorlib"Title="MainWindow" Height="350" Width="525"> <Grid><Grid.RowDefinitions><RowDefinition Height="161*" /><RowDefinition Height="150*" /></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="225*" /><ColumnDefinition Width="278*" /></Grid.ColumnDefinitions></Grid>
</Window>
复制代码

我们奇怪的发现为什么宽度有“*”号,这里要解释一下wpf中对“宽高度”的设置有三个形式。

①:绝对尺寸         <RowDefinition Height="161" />

②:自动尺寸         <RowDefinition Height="auto" />

③:按比例尺寸      <RowDefinition Height="161*" />

 

那我们就有疑问了,到底161* 是多少呢?计算规则如下:

我们这里的窗体Height=350。

第一行高度为: 350/(161+150)*161  

第二行高度为:350(161+150)*150

 

<2>: UI元素布局

   ①:UI元素对号入座

           很简单,我们只要在button的Grid属性上设置button应该放在哪一个单元格即可。

   ②:UI元素跨行跨列

 

二:xaml中扩展标记

    扩展标记分为两种:wpf级别和xaml级别。

<1> wpf级别扩展标记

①: StaticResource

       用于获取资源的值,值获取在xaml编译的时候完成,什么意思呢?先举个例子。

首先,我们发现有一个window.Resources,这东西我们可以认为是在MainWindow类中定义的全局变量,这里我就定义个name=“一线码农”的

变量,那么textblock获取变量的方式就可以通过StaticResource。

 

②:DynamicResource

       跟StaticResource唯一不同的是,它是在运行时获取的,如果大家知道C#里面的dynamic关键字,我想就不用解释了,上代码。

 

③:Binding

     还是在webform中找一下关键字吧,相当于webform中的Eval,上代码说话。

复制代码
 1 <Window x:Class="WpfApplication1.MainWindow"2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4         xmlns:sys="clr-namespace:System;assembly=mscorlib"5         Title="MainWindow" Height="350" Width="525">6     <Grid>7         <TextBox Height="23" Margin="87,75,0,0" Name="textBox1"  Width="120" />8         <TextBox Height="23" Margin="87,126,0,0" Name="textBox2"  Width="120" 9                  Text="{Binding ElementName=textBox1, Path=Text}" />
10     </Grid>
11 </Window>
复制代码

这里我把textbox2的text绑定到了textbox1的text上,最后的效果就是我在textbox1上输入,textbox2也会相应的变化,很有意思。

④:TemplateBinding

     这个被称为模板绑定,可以把对象的属性和模板的属性绑定起来,详细的介绍放在后续文章中。

 

<2>xaml级别扩展标记

①  x:Type

   将模板或者样式指定在哪一种对象上时需要用type指定。

复制代码
 1 <Window x:Class="WpfApplication1.MainWindow"2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4         xmlns:sys="clr-namespace:System;assembly=mscorlib"5         Title="MainWindow" Height="350" Width="525">6     <Window.Resources>7         <Style TargetType="{x:Type TextBox}">8             <Setter Property="Background" Value="Red"/>9         </Style>
10     </Window.Resources>
11     <Grid>
12         <TextBox Height="23" 
13                  Margin="87,75,0,0" Name="textBox1"  Width="120" />
14     </Grid>
15 </Window>
复制代码

如这里我定义的css样式,将background=red指定到textbox控件上。

②:x:Static

    主要用于在xaml中获取某个对象的静态值,上代码说话。

复制代码
namespace WpfApplication1
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public static string name = "一线码农";public MainWindow(){InitializeComponent();}}
}
复制代码

xaml代码:

复制代码
<Window x:Class="WpfApplication1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApplication1"Title="MainWindow" Height="350" Width="525"><Grid><TextBox Height="23"  Text="{x:Static local:MainWindow.name}"Margin="87,75,0,0" Name="textBox1"  Width="120" /></Grid>
</Window>
复制代码

最后效果:

 

③:x:null

    这个就比较简单了,xaml中某某控件设为null就靠它了。

1     <Grid>
2         <TextBox Height="23"  Text="{x:Null}"
3                  Margin="87,75,0,0" Name="textBox1"  Width="120" />
4     </Grid>

 

④:x:Array

  这个主要就是在xaml中创建数组,还是举个例子。

转载于:https://www.cnblogs.com/newcoder/p/4785268.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 线程 状态 图_Java提高——多线程(一)状态图

操作系统中的进程和线程的概念进程是指一个内存运行的应用程序&#xff0c;每个进程都有自己独立的一块内存空间&#xff0c;一个进程中可以启动多个线程&#xff0c;比如windows下的一个运行的应用程序.exe就是一个进程。线程是指进程中的一个执行流&#xff0c;一个进程可以运…

幽幽的灵光射不出你想要的疯狂

秋天到了&#xff0c;忧伤便无处可逃&#xff0c;秋天的忧伤的气息&#xff0c;就像一个妖艳的美女躺在你的身边&#xff0c;让你热血沸腾&#xff0c;冲动无比&#xff0c;而又悲喜交加&#xff0c;忧愁满地。如果不信&#xff0c;你可以试试。分享一首去年的诗歌&#xff0c;…

找规律

找规律填写NN方阵。如N8时, 其方阵为: 1 1 1 1 1 1 1 11 2 2 2 2 2 2 11 2 3 3 3 3 2 11 2 3 4 4 3 2 11 2 3 4 4 3 2 11 2 3 3 3 3 2 11 2 2 2 2 2 2 11 1 1 1 1 1 1 1 上代码&#xff1a; 1 #include <stdio.h&g…

arm qt5 iconv 问题

2019独角兽企业重金招聘Python工程师标准>>> 问题 3&#xff1a;./system/rootlib/helloworld -qws &#xff0c;程序运行起来&#xff0c;仍报错 QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed …

[转]用Whois获得电信运营商的IP地址是如何分配的?

[转]用Whois获得电信运营商的IP地址是如何分配的? Linux下获得一些中国电信运营商的IP地址分配情况: APNIC是管理亚太地区IP地址分配的机构&#xff0c;它有着丰富准确的IP地址分配库&#xff0c;同时这些信息也是对外公开的&#xff0c;并提供了一个查询工具&#xff0c;下面…

庆祝教师节,李宁老师课程优惠劵疯抢中、会员卡优惠中,先到先得

李宁老师会员卡&#xff08;9-10至9-14&#xff09;大优惠&#xff1a;http://edu.51cto.com/member/id-12_1.html优惠劵只能购买李宁老师的视频课程&#xff1a;http://edu.51cto.com/member/id-12_1.html 优惠劵有效期&#xff1a;2015-9-10 至 2015-9-14 购买规则&#xf…

java mset_Java 反射机制(包括组成、结构、示例说明等内容)

第1部分 Java 反射机制介绍Java 反射机制。通俗来讲呢&#xff0c;就是在运行状态中&#xff0c;我们可以根据“类的部分已经的信息”来还原“类的全部的信息”。这里“类的部分已经的信息”&#xff0c;可以是“类名”或“类的对象”等信息。“类的全部信息”就是指“类的属性…

自己动手,实现一种类似ListT的数据结构(二)

前言&#xff1a; 首先&#xff0c;小匹夫要祝各位看官圣诞快乐&#xff0c;新年愉快&#xff5e;。上一篇文章《自己动手&#xff0c;实现一种类似List<T>的数据结构(一&#xff09;》 介绍了一下不依靠List<T>实现的各种接口&#xff0c;仿造一个轻量级数据结构的…

局域网内连接MySQL

2019独角兽企业重金招聘Python工程师标准>>> 局域网内连接MySQL 博客分类&#xff1a; MySQL MySQL局域网连接grant 我们都知道连接MySQL一般用的语句就是 jdbc:mysql://localhost:3306/database&#xff0c; 但是当你要连接到其他机器上的mysql的时候&#xff0c;…

[leetcod] Clone Graph

题目&#xff1a; Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJs undirected graph serialization: Nodes are labeled uniquely. We use # as a separator for each node, and , as a separator for node label and …

【iOS7一些总结】9、与列表显示(在):列表显示UITableView

列表显示&#xff0c;顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容。于ios在列表视图UITableView达到。这个类在实际应用中频繁&#xff0c;是很easy理解。这里将UITableView的主要使用方法总结一下以备查。UITableView定义在头文件UITableView.h中&#xff0c;详…

SpringMVC(一):环境搭建

2019独角兽企业重金招聘Python工程师标准>>> //TODO 转载于:https://my.oschina.net/u/1020238/blog/505272

DockPanel 类

DockPanel 类 .NET Framework 4.5其他版本此主题尚未评级 - 评价此主题定义您可水平或垂直排列子元素的区域&#xff0c;互相。 继承层次结构 System.Object System.Windows.Threading.DispatcherObjectSystem.Windows.DependencyObjectSystem.Windows.Media.VisualSystem.Wind…

【分布式计算】MapReduce的替代者-Parameter Server

原文&#xff1a;http://blog.csdn.net/buptgshengod/article/details/46819051 首先还是要声明一下&#xff0c;这个文章是我在入职阿里云1个月以来&#xff0c;对于分布式计算的一点肤浅的认识&#xff0c;可能有些地方不够妥善&#xff0c;还请看官可以指出不足的地方&#…

iOS开发多线程篇—线程安全

iOS开发多线程篇—线程安全 一、多线程的安全隐患 资源共享 1块资源可能会被多个线程共享&#xff0c;也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象、同一个变量、同一个文件 当多个线程访问同一块资源时&#xff0c;很容易引发数据错乱和数据安全问题 示例…

Android Ion 框架 文件下载

为什么80%的码农都做不了架构师&#xff1f;>>> ion是的一个安卓异步网络和图片加载库。 特性 异步下载&#xff1a;下载图片 (用ImageViews 或者 Bitmaps显示)&#xff1b;下载JSON文件 (通过Gson解析)&#xff1b;下载字符串&#xff1b;下载文件&#xff1b;Flu…

CSS基础----元素分类

2019独角兽企业重金招聘Python工程师标准>>> 块级元素特点&#xff1a; 1、每个块级元素都从新的一行开始&#xff0c;并且其后的元素也另起一行。 2、元素的高度、宽度、行高以及顶和底边距都可设置。 3、元素宽度在不设置的情况下&#xff0c;是它本身父容器的100…

Linux 高可用(HA)集群之keepalived

一、keepalived介绍1、Keepalived 定义Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived&#xff0c;一台为主服务器&#xff08;MASTER&#xff09;&#xff0c;一台为备份服务器&#…

java 将要死亡_人在即将死亡的时候,能意识到自己将要死亡了吗?科学家给出答案...

引言&#xff1a;自然界内大多数生物都敬畏生命&#xff0c;也害怕死亡。毕竟&#xff0c;死亡意味着结束与告别&#xff0c;将死之人多会留恋世间的人或事。那么&#xff0c;在临死之前&#xff0c;人会意识到自己将走向死亡吗&#xff1f;人类对长生不老的追求古已有之&#…

C#开发微信门户及应用(24)-微信小店货架信息管理

C#开发微信门户及应用(24)-微信小店货架信息管理 原文:C#开发微信门户及应用(24)-微信小店货架信息管理在前面微信小店系列篇《C#开发微信门户及应用(22)-微信小店的开发和使用》里面介绍了一些微信小店的基础知识&#xff0c;以及《C#开发微信门户及应用(23)-微信小店商品管理…