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,一经查实,立即删除!

相关文章

android源码包下载

http://rgruet.free.fr/public/其他下载地址&#xff1a;http://cid-b50f9d5897331c44.office.live.com/browse.aspx/Android技术群共享/source code 转载于:https://www.cnblogs.com/liangxiaofeng/p/4173340.html

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

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

UITableView 重用cell方法edequeueReusableCellWithIdentifier,出现错误

UITableView 使用重用cell方法edequeueReusableCellWithIdentifier&#xff0c;出现错误&#xff1a;*** Terminating app due to uncaught exception NSInternalInconsistencyException, reason: unable to dequeue a cell with identifier cell3 - must register a nib or a …

学习ecshop 教程网址

http://www.chinab4c.com&#xff08;中国B4C电子商务&#xff09;转载于:https://www.cnblogs.com/ymj0906/p/4175681.html

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

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

java 复杂 sql_复杂的SQL条件

概述什么是 Nutz.Dao 中的复杂SQL条件对于 Nutz.Dao 来说&#xff0c;它本质上就是将你的 Java 对象转化成 SQL&#xff0c;然后交给 JDBC 去执行。而 SQL 中&#xff0c;当执行数据删除和查询操作时&#xff0c;最常用的就是 WHERE 关键字。WHERE 关键字后面的就是所谓的复杂查…

找规律

找规律填写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 …

android java 调试快捷键_Android Studio 代码页跳界面 /java和XML快速切换技巧

从csdn博客搬家过来&#xff0c;请多关照&#xff01;之前一直在csdn博客,也写了不少关于java的文章,主要是学习java上的一些问题.想通过这种方式来加深对问题的认知,同时也可以帮助到志同道合的人,一起在编程的道路上共进,共勉.fancybox的配置项Fancybox的API和配置选项说明 属…

设计模式之Builder (创建者模式)的一些个人理解(转)

对于Builder模式很简单&#xff0c;但是一直想不明白为什么要这么设计&#xff0c;为什么要向builder要Product而不是向知道建造过程的Director要。刚才google到一篇文章&#xff0c;总算清楚了。在这里转贴一下这位richardluo的比喻。简单地说&#xff0c;就好象我要一座房子住…

python-多继承

python中的多继承python和C一样&#xff0c;支持多继承。概念虽然容易&#xff0c;但是困难的工作是如果子类调用一个自身没有定义的属性&#xff0c;它是按照何种顺序去到父类寻找呢&#xff0c;尤其是众多父类中有多个都包含该同名属性。class P1 #(object): def foo(self…

java父子表_Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级...

在平时的开发工作中&#xff0c;经常遇到这样一个场景&#xff0c;在数据库中存储了具有父子关系的数据&#xff0c;需要将这些数据以树形结构的形式在界面上进行展示。本文的目的是提供了一个通用的编程模型&#xff0c;解决将具有父子关系的数据转换成树形结构的问题。如有不…

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

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

BZOJ 2301 Problem b(莫比乌斯反演+分块优化)

题目链接&#xff1a;http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id37166 题意&#xff1a;对于给出的n个询问&#xff0c;每次求有多少个数对(x,y)&#xff0c;满足a≤x≤b&#xff0c;c≤y≤d&#xff0c;且gcd(x,y) k&#xff0c;gcd(x,y)函数为x和y的最大…

java importgeopoint_如何在地图上显示更多点(GeoPoint)?

目前&#xff0c;我能够在代码中显示第一个点(pointStatie)的一点&#xff0c;但我希望显示两个点。我想要显示我所在的位置&#xff0c;以及我从另一个班级通过坐标的另一点。我目前的代码是&#xff1a;package aexp.elistcbox;import android.os.Bundle;import android.prov…

Java实现串口通信的小样例

用Java实现串口通信&#xff08;windows系统下&#xff09;&#xff0c;须要用到sun提供的串口包 javacomm20-win32.zip。当中要用到三个文件&#xff0c;配置例如以下&#xff1a; 1.comm.jar放置到 JAVA_HOME/jre/lib/ext; 2.win32com.dll放置到 JAVA_HOME/bin; 3.javax.comm…

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

李宁老师会员卡&#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;可以是“类名”或“类的对象”等信息。“类的全部信息”就是指“类的属性…

XML序列化和反序列化 以及相关类的写法

类的写法&#xff1a; 省网办数据对接中运用到 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization;namespace SWBExchange.Common.Entities {public class Body{[XmlElement(ElementName "BasicIn…

python-main

当你打开一个.py文件时,经常会在代码的最下面看到if __name__ __main__:,现在就来介 绍一下它的作用.模块是对象&#xff0c;并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块&#xff0c;那么模块__name__ 的值…