【转】9、XAML名称空间详解

转自:9、XAML名称空间详解 - 种花生的读书人 - 博客园

XAML命名空间

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Window>
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation命名空间映射许多当前*.xaml文件使用的WPF.NET命名空间。这个一对多的映射其实使用程序集级别的
[XmlnsDefinition]特性硬编码在WPF程序集中。例如导入System.Windows命名空间:  
[asembly:XmlnsDefinition(“http://schemas.microsoft.com/winfx/2006/xaml/presentation”)]

另外可以使用clr-namespace和assembly标记建立一个自定义的XML命名空间,使其映射到自定义库。
xmlns:myCtrls="clr-namespace:MyControls;assembly=MyControls"

X名称空间里的成员(如X:Class、X:Name)是专门写给XAML编译器看、用来引导XAML编译器把XAML代码编译成CLR代码的。

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

4.2x名称空间中的Attribute

4.2.1x:Class的作用是告诉XAML编译器将XAML标签的编译结果与后台中的指定类合并,使用x:Class时必须遵循以下要求:

*这个Attribute只能用于根结点

*使用x:Class的根结点的类型要与x:Class的值所指示的类型保持一致

*x:Class的值所指示的类型在声明时必须使用partial关键字

<Window x:Class="将窗体设为透明1.MainWindow"根结点
    public partial class MainWindow : Window
保持一致   partial关键字 
4.2.3x:Name XAML的标签声明的是对象,一个XAML标签对应一个对象,这个对象一般是一个空间类的实例。 
x:Name的作用有两个:(1)告诉XAML编译器,当一个标签带有x:Name时除了为这个标签生成对应的实例外还要为这个实例声明一个引用变量,这个变量名就是x:Name的值(2)将XAML标签所对应的对象的Name属性也设置为x:Name的值,并把这个值注册到UI树上,以方便查找。 
使用x:Name后,XAML标签对应的实例就具有了自己的引用变量,而且这些引用变量都是类的字段。
<Grid><TextBox Width="100"Margin="5"HorizontalAlignment="Left"VerticalAlignment="Top" /><Button Margin="5"HorizontalAlignment="Right"VerticalAlignment="Bottom"Click="Button_Click"Content="OK" /></Grid>                      
    
     private void Button_Click(object sender, RoutedEventArgs e){Grid grid1 = this.Content as Grid;//MainWindow.Content属性引用着Grid的实例,而Grid的实例的Children[0]又引用着TextBox的实例TextBox textBox = grid1.Children[0] as TextBox;if (string.IsNullOrEmpty(textBox.Text)){textBox.Text = "hello";}else{textBox.Text = textBox.Name;}}
代码简写过程 
 
<StackPanel Background="Gray"><StackPanel.Children><!--可以简写掉,后台可通过Children属性遍历控件--><TextBox Margin="5"/><TextBox Margin="5"/><Button Margin="5"/></StackPanel.Children></StackPanel> 4.2.4 x:FieldModifier:用来改变引用变量的访问级别
<TextBox Margin="5" x:FieldModifier="public" />
<TextBox Margin="5" x:FieldModifier="private" />
4.2.5 x:Key x:Key的作用就是为资源贴上用于检索的索引,在WPF中几乎每个元素都有自己的Resource属性,
这个属性是个“Key-Value”式的集合,
只要把元素 放进这个集合,这个元素就成为资源字典中的一个条目。
   <Window.Resources><sys:String x:Key="myString">Hello WPF</sys:String></Window.Resources>  在XAML中访问资源<TextBox Margin="5" Text="{StaticResource ResourceKey=myString}" />
在C#中访问资源             private void Button_Click_1(object sender, RoutedEventArgs e){string str = this.FindResource("myString") as string;this.textBox2.Text = str;} 
4.2.6 x:Shared:在学习x:Key时我们知道一旦我们把某些对象当作资源放进资源字典里后就可以把它检索出来重复使用,
那么,每当我们检索到一 个对象的时候,到底得到的是同一个对象,还是对象的副本呢?这就要看我们给x:Shared赋什么值了。
x:Shared一定要与x:Key配合使用, 如果x:Shared的值为true,那么得到的是同一个对象,否则x:Shared的值为false,
得到的是这个对象的一个副本。默认情况下,XAML编译器会 为资源隐藏地添加x:Shared=“true”,
也就是说,默认情况下我们得到的都是同一个对象。 
4.3 x名称空间中的标记扩展 4.3.1 x:Type:其值是一个数据类型的名称 
 class MyButton:Button{public Type UserWindowType { get; set; }protected override void OnClick(){base.OnClick();Window win = Activator.CreateInstance(this.UserWindowType) as Window;if (win != null){win.ShowDialog();}}}
   <StackPanel Background="Gray"><StackPanel.Children><!--  可以简写掉,后台可通过Children属性遍历控件  --><TextBox Margin="5" Text="{StaticResource ResourceKey=myString}" /><TextBox x:Name="textBox2" Margin="5" /><!--  <Button Margin="5" Click="Button_Click_1" />  --><Button Content="OK" /></StackPanel.Children></StackPanel>
<Window x:Class="_4._2.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:_4._2"Title="Window1"Width="300"Height="300"><Grid><local:MyButton Margin="5"Content="Show"UserWindowType="{x:Type TypeName=local:MainWindow}" /></Grid>
</Window>
4.3.2 x:Null:显式地对一个属性赋一个空值,在C#语言中null表示空值,在XAML里x:Null表示空值 
   <Window.Resources><Style x:Key="{x:Type Button}" TargetType="{x:Type Button}"><Setter Property="Width" Value="60"/><Setter Property="Height" Value="36"/><Setter Property="Margin" Value="5"/></Style></Window.Resources><StackPanel><Button Content="OK"/><Button Content="OK"/><Button Content="OK"/><Button Content="OK" Style="{x:Null}"/></StackPanel>

        <Button Content="Hello"><Button.Style><x:Null/></Button.Style></Button>
4.3.4 x:Array作用就是通过它的Items属性向使用者暴露一个类型已知的ArrayList实例,ArrayList内成员的类型由x:Array的Type指明。 
       <ListBox Margin="5"><ListBox.ItemsSource><x:Array Type="sys:String"><sys:String>Trim</sys:String><sys:String>Tom</sys:String><sys:String>Vitor</sys:String></x:Array></ListBox.ItemsSource></ListBox> 4.3.5 x:Static 是在XAML文档中使用数据类型的static成员,因为在XAML中不能写逻辑代码
        public static string WindowTitle = "山高水长";public static string ShowText { get { return "水落石出"; } }
     xmlns:local="clr-namespace:统一设置一组控件的样式"
        <TextBlock Text="{x:Static local:MainWindow.ShowText}"/>
4.4 XAML指令元素
x:Code 作用就是可以包含一些本应放置在后置代码中的C#代码,,好处是代码在同一个文件中,不好的地方是不便于以后的扩展x:XData 把包含数据的对象成为数据源,用于把数据源中的数据提供给数据使用者的对象被称为数据提供者(Data Provider)     
<Window.Resources><XmlDataProvider x:Key="MyData" XPath="Properties/Fruits"><x:XData><Supermarket xmlns=""><Fruit><Fruit Name="Peach"/><Fruit Name="Banana"/><Fruit Name="Orangle"/></Fruit><Drinks><Drink Name="Coca Cola"/><Drink Name="PEPSI Cola"/></Drinks></Supermarket></x:XData></XmlDataProvider></Window.Resources>
 

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

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

相关文章

ASP.NET中使用非托管DLL

在ASP.NET窗体页面中使用非托管的DLL&#xff0c;则该DLL的部署则成了一大麻烦事&#xff0c;你把他放在bin目录下不管用&#xff0c;网上介绍了几种解决办法&#xff0c;貌似有点繁琐&#xff0c;其实只要新建一个程序集项目来封装这个DLL中被调用的函数&#xff0c;然后在Web…

【转】Linux的.a、.so和.o文件

转自&#xff1a;Linux的.a、.so和.o文件_chlele0105的专栏-CSDN博客 在说明Linux的.a、.so和.o文件关系之前&#xff0c;先来看看windows下obj,lib,dll,exe的关系 windows下obj,lib,dll,exe的关系 lib是和dll对应的。lib是静态链接库的库文件&#xff0c;dll是动态链接库的库…

wince使用自定义字体

在wince中使用自定义字体其实很简单&#xff0c;只要将自已的字体加到你的程序中就可以使用了&#xff0c;在使用完后再将其清除掉。以wince中加使用"Georgia”字体为例&#xff1a; 在程序初始化的时候将你的字体加载进程序 AddFontResource(L"NandFlash\\Font\\Geo…

Visual Studio 2008 十大新功能

VS2005还没有最终稳定的版本&#xff0c;但是我想在微软的某个办公室&#xff0c;一个项目组正在研究发展Visual Studio 2008这个版本。我看了一下表&#xff0c;现在的时间是公元2006-3-9日&#xff0c;离微软发布VS2008版的α版还有整整18个月&#xff0c;我不知道它最终会是…

【转】linx 设备名字来由 sd sr sg st

转自&#xff1a;/dev/sr0 与/dev/cdrom_luoweifeng1989的博客-CSDN博客_/dev/sr0 一直不知道 sda sdb sr0 这些名字的前两两个字母是什么意思 > > On Tue, Nov 3, 2009 at 9:34 AM, Derek Broughton > > <derekpointerstop.ca>wrote: > > Transla…

wince6.0中文内核定制

对WinCE体积进行剪裁&#xff0c;并让WinCE支持简体中文和英文显示&#xff0c;默认显示是中文,并以下对字体选取 作详细的说明&#xff1b; 关键操作步骤: 1.先创建一个WINCE内核工程. 2.先打开目标的工程文件&#xff0c;单击“Project”菜单&#xff0c;再单击“Properties-…

java 中的堆和栈

Java把内存划分成两种&#xff1a;一种是栈内存&#xff0c;一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时&#xff0c;Java就在栈中为这个变量分配内存空间&#xff0c;当超过变量的作用域后&#…

【转】ubuntu 开机sudo启动应用程序

转自&#xff1a;ubuntu 开机sudo启动应用程序_Honhy的博客-CSDN博客_sudo 启动应用 第一步&#xff1a;创建一个脚本(run.sh)&#xff0c;我是放在桌面&#xff0c;脚本内容为: echo "hon123"|sudo -S /home/python/qt/Tools/QtCreator/bin/qtcreator exit 0 橙色的…

WinCE Emulator使用介绍

最近用了一下WinCE的模拟器&#xff0c;我做WinCE有几年了&#xff0c;从来没有用过WinCE的模拟器&#xff0c;第一次接触WinCE的时候就是一块S3C2410的板子和PB4.2的开发平台&#xff0c;然后就开始折腾&#xff0c;后来各种开发板都用过&#xff0c;WinCE也从4.2版本用到了6.…

lucene中对不同的域使用不同的分析器

在lucene使用过程中&#xff0c;如果要对同一IndexWriter中不同Document&#xff0c;不同Field中使用不同的analyzer&#xff0c;我们该如何实现呢&#xff1f; 通过对《lucene in action》的阅读&#xff0c;发现是可以解决这一问题的。lucene可以正对整个IndexWriter对象或者…

【转】Ubuntu Desktop下自动启动终端并运行脚本

转自&#xff1a;Ubuntu Desktop下自动启动终端并运行脚本 - 简书 alexubuntu19:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 19.04 Release: 19.04 Codename: disco alexubuntu19:~# uname -a Linux ubunt…

使用js实现换肤功能

Skin.html <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equiv"Content-Type" content"text/html; charsetgb2312" /> <title>网页焕肤</title> <style type"text/css"> #main…

【转】开机出现 error:file “/boot/grub/i386-pc/normal.mod“ not found 错误提示

今天用ubuntu启动盘格式化了一个分区后&#xff0c;更改了分区顺序&#xff0c;导致找不到normal.mod文件。 现在openSUSE系统无法启动。 error:file "/boot/grub/i386-pc/normal.mod" not found grub rescue> 在网上查询了很多&#xff0c;步骤如下&#xff…

VB用API实现各种对话框(总结)(转载)

标准对话框(SmDialog) Option Explicit 定义一个全局变量,用于保存字体的各种属性 Public Type SmFontAttr FontName As String 字体名 FontSize As Integer 字体大小 FontBod As Boolean 是否黑体 FontItalic As Boolean 是否斜体 FontUnderLine …

【转】DICOM简述!!!!

转自&#xff1a;DICOM简述 - 简书 视频教程&#xff1a;https://www.bilibili.com/video/av66144772 DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;即医学数字成像和通信&#xff0c;是医学图像和相关信息的国际标准&#xff08;ISO 12052&…

WinCE OAL中的OEMIoControl函数

关于OEMIoControl函数&#xff0c;我在2008年1月份写过一篇blog叫“WinCE BSP中OAL层中的OEMIoControl介绍”&#xff0c;已经比较详细的介绍了OEMIoControl&#xff0c;今天在这里只是对OEMIoControl中比较常用的case说一说。看看PB的文档就知道OEMIoControl可以包含很多case而…

实用MYSQL语句收集

SQL分类&#xff1a; DDL—数据定义语言(Create&#xff0c;Alter&#xff0c;Drop&#xff0c;DECLARE) DML—数据操纵语言(Select&#xff0c;Delete&#xff0c;Update&#xff0c;Insert) DCL—数据控制语言(GRANT&#xff0c;REVOKE&#xff0c;COMMIT&#xff0c;ROLLBAC…

【转】xilinx usb下载器 速度高速极限设置 JTAG-SMT2 JTAG-HS2 JTAG-HS3和Platform Cable USB DLC9 DLC10速度测试

xilinx usb下载器 下载速度极限设置以及高速JTAG-SMT2(HS1 HS2 HS3)和DLC9 DLC10 速度测试 对于一款xilinx的下载器&#xff0c;研发和烧录以及boss都最关心下载速度的极限值。因为速度快可以在短时间内完成下载和仿真采集数据等任务。时间就是金钱&#xff0c;能节约时间大家…

DataGridView中的CheckBox

1.为DataGridView添加一列类型为DataGridViewCheckBoxColumn的列, 如果想CheckBox能单独选择的话,就一定要为DataGridView启用编辑.否则就去掉启用编辑的勾选项. 2.DataGridView中CheckBox的全选与不全选 一般会使用Button,LinkLabel,CheckBox来做为事件的起点,那么就可以在相应…

WinCE的I2C驱动程序设计

1 I2C 通信协议及S3C2410 芯片介绍 I2C(Inter Integrated Circuit) 总线是1980 年由Philips 公司推出的。 I2C 总线用两条线&#xff08;SDA 和SCL &#xff09;在总线和装置之间传递信息&#xff0c;在微控制器和外部设备之间进行串行通信或在主设备和从设备之间进行双向数据传…