1 X:Class

作用告诉XAML编译器将XAML标签的编译结果与后台代码中指定的类合并,只能用于根节点,并且与之同名的类需要有Partial 例如窗口

2 X:ClassModifier

作用告诉XAML编译器有标签编译生成的类具有怎样的访问控制级别(Public,Privare Internal Protect…..) “访问级别必须和同名类的访问级别一样”

3 X:Name

前言  一个XAML标签对应一个对象,这个对象一般是一个空间的实例,在.NET平台上类是引用类,引用类型的实例在使用时一般是以“引用者->实例“的形式成对出现的,而且我们只能通过引用者来访问实例,当实例不在被任何引用者引用则当做垃圾被销毁

例子

XAML编码

<Grid>
<TextBox x:Name="text" x:FieldModifier="public"></TextBox>
<Button Content="引用解析" Click="Button_Click"></Button>
</Grid>

C#中使用编码

private void Button_Click(object sender, RoutedEventArgs e)
{
Grid g = this.Content as Grid;//窗体的属性Content引用着Grid的实例
TextBox t = g.Children[0] as TextBox;//Grid的实例Children[0]又引用着TextBox的实例
if (string.IsNullOrEmpty(t.Name))//判断TextBox的特征Name是否为空
{
t.Text = "";
}
//if (string.IsNullOrEmpty(text.Name))//判断TextBox的特征Name是否为空
//{
// text.Text = "";
//}
}

使用X:Name

X:Name 为标签生成对应实例的引用,并把这个值注册到UI树上,其值即为引用变量,

4 X:FidldModifier

控件的访问级别(即控件的引用变量的访问级别)

作用:X:Name=Value Value即为控件的引用变量,默认控件的访问级别为Internal,如果需要从一个程序集访问另一个程序集窗体的控件就需要更改次特性为public

<TextBox x:Name="text" x:FieldModifier="public"></TextBox>

5 X:Key

在XMAL中我们可以把很多需要多次使用的内容提取出来放在资源字典中,需要使用这个资源的时候就使用它的X:Key检索出来(如重复使用的Style Template Data 动画等)

X:Key作用就是为资源贴上用于检索的索引

 XAML编码

<Window.Resources>
<sys:String x:Key="mystring">Hello word</sys:String>
</Window.Resources>
<StackPanel>
<TextBox Text="{StaticResource ResourceKey=mystring}"></TextBox>
<TextBox x:Name="t"></TextBox>
<Button Content="C#使用X:Key" Click="Button_Click"></Button>
</StackPanel>

C#编码

private void Button_Click(object sender, RoutedEventArgs e)
{
string str = this.FindResource("mystring") as string;
t.Text = str;
}

6 X:Shared

X:shared 与X:Key配合使用,X:Shared=True(默认)每次检索到这个资源对象的时候都是同一个对象,否则我们得到的是这个对象的一个新的副本

7 X:Type

X:Type的值是一个数据类型,

.Net名为Type的类作为所有数据类型在编程层面的抽象

public class MyButton:Button
{
public Type UserWindow { get; set; }
protected override void OnClick()
{
base.OnClick();
Window main = Activator.CreateInstance(this.UserWindow) as Window;
if(main!=null)
{
main.ShowDialog();
}
}
}

或者

8 X:Null

显式的对一个属性赋一个空值

<Window.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="44"></Setter>
<Setter Property="Background" Value="Blue"></Setter>
<Setter Property="FontStyle" Value="Italic"></Setter>
</Style>
</Window.Resources>
<StackPanel Margin="5">
<TextBlock Text="Hello word"></TextBlock>
<TextBlock Text="Hello word"></TextBlock>
<TextBlock Text="Hello word" Style="{x:Null}"></TextBlock>
</StackPanel>

9 X:Array

X:Array的作用就是通过它的Item属性向使用者暴漏一个类型已知的ArrayList实例,其类型有X:Array的Type指定

<Grid>
<ListBox>
<ListBox.ItemsSource>
<x:Array Type="sys:String">
<sys:String>Time</sys:String>
<sys:String>Date</sys:String>
<sys:String>Mouth</sys:String>
</x:Array>
</ListBox.ItemsSource>
</ListBox>
</Grid>

10 X:Static

在XAML文档中使用数据类型的statc成员(一定是数据类型的属性或字段)

 C#后台代码里面定义二个静态字段

public partial class XStatic : Window
{
public static string WindowTitle = "小石潭记";
public static string ShowText { get { return "输欧输出"; } }
public XStatic()
{
InitializeComponent();
}
}

 XAML引用(部分代码)

Window x:Class="深入浅出WPF.View.XStatic"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:深入浅出WPF.View"
Title="{x:Static local:XStatic.WindowTitle}" Height="300" Width="300">
<Window.Resources>
<XmlDataProvider x:Key="dataProvider" XPath="GameStates" Source="XML\XMLData.xml"></XmlDataProvider>
</Window.Resources>
<StackPanel>
<TextBox Text="{x:Static local:XStatic.ShowText}"></TextBox>

11 X:XData和X:Code (指令元素)

 X:Code作用是可以在XAMl里面写C#的逻辑代码

XmlDataProvider数据提供者,XmlDataProvider提供的数据就放在X:XData标签里面

<Window.Resources>
<XmlDataProvider x:Key="xdp" XPath="FileSystem/Folder">
<x:XData>
<FileSystem xmlns="">
<Folder Name="Books">
<Folder Name="Programming">
<Folder Name="Window">
<Folder Name="WPF"/>
<Folder Name="WCF"/>
</Folder>
</Folder>
<Folder Name="Tool">
<Folder Name="Java"/>
<Folder Name="C#"/>
<Folder Name="C++"/>
</Folder>
</Folder>
</FileSystem>
</x:XData>
</XmlDataProvider>
</Window.Resources>

XMAL 中x名称控件的Auttribute的更多相关文章

  1. C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用)

    C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用) 简单代码,记录一下.一个BackgroundWorker控件  backgroundWorkerRefr ...

  2. C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)

    在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位?此时就要借助控件的.Anchor属性.Anchor属性定义控件的定位点位置.当控件锚定到某个 ...

  3. VISA资源名称控件

    NI-VISA能自动检测端口.通过前面板上的VISA资源名称控件或VISA查找资源函数可查看端口列表.在任何平台上,NI-VISA支持的最大串口数量为256,串口的默认数量取决于操作系统. VISA资 ...

  4. EBS OAF 开发中的OAMessageRadioGroup控件

    EBS OAF 开发中的OAMessageRadioGroup控件 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 简单介绍 RadioGro ...

  5. WPF-在Grid中编程添加控件

    摘要: 在Grid中编程添加控件,布局控件的位置用到的代码是: gridLayout.Children.Add(textblock); Grid.SetRow(textblock, ); Grid.S ...

  6. vs2010中关于HTML控件与服务器控件分别和js函数混合使用的问题

    此文档解决以下问题: 1.在.cs文件中如何访问html控件? 在html控件中添加属性runat="server"即可 2.在html控件中,如何调用js函数? 在html控件中 ...

  7. ASP.NET MVC 中使用用户控件——转

    讲讲怎么在 ASP.NET MVC2中使用用户控件.首先我们新建一个用户控件,   我们命名为SelectGroup.ascx,代码如下 <%@ Control Language="C ...

  8. 怎样在不对控件类型进行硬编码的情况下在 C#vs 中动态添加控件

    文章ID: 815780 最近更新: 2004-1-12 这篇文章中的信息适用于: Microsoft Visual C# .NET 2003 标准版 Microsoft Visual C# .NET ...

  9. C#中的BackgroundWorker控件

    C#中的BackgroundWorker控件   Keywords: C# .NET BackgroundWorkerSource: http://txw1958.cnblogs.com/ Backg ...

随机推荐

  1. [Python][MachineLeaning]Python Scikit-learn学习笔记1-Datasets&Estimators

    Scikit-learn官网:http://scikit-learn.org/stable/index.html Datasets 标准的数据集格式为一组多维特征向量组成的集合.数据集的标准形状(sh ...

  2. UICollectionView的简单使用和常用代理方法

    UICollectionView相对于UITableView有更加自由的布局,做出的界面可变性更大最近开始接触使用UICollectionView,整理了一下常用的代理方法 首先需要先添加UIColl ...

  3. SPOJ 4110 Fast Maximum Flow (最大流模板)

    题目大意: 无向图,求最大流. 算法讨论: Dinic可过.终于我的常数还是太大.以后要注意下了. #include <cstdio> #include <cstring> # ...

  4. 配置chrome支持本地(file协议)ajax请求

    将html代码拖拽进入chrome通过file协议浏览时,发送的ajax请求本地文件,会报跨域错误. XMLHttpRequest cannot load file:///E:/webs/extJS/ ...

  5. js控制浏览器后退

    <script type="text/javascript"> window.history.forward(1); </script>

  6. Leetcode 104 Maximum Depth of Binary Tree python

    题目: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the ...

  7. C++之------运算符重载

    ①  什么是运算符重载? 何为C++的运算符重载呢? 其实就是运算符给它重新赋予新的含义或者多重含义.让它有另外一种新的功能. 为什么需要运算符重载? 面向对象中为了实现类的多态性,我们就引用了运算符 ...

  8. 手把手教你学习FPGA系列视频教程_救护车鸣笛声

    本套教程主要面对FPGA初学者,本次DIY活动不仅让初学者掌握FPGA硬件电路设计以及焊接方面的知识,更重要的是让初学者学习硬件描述语言 (VerilogHDL)描述数字电路,以及Quartus II ...

  9. PASCAL的优越性:官方的说法(不需要Makefile,节约大量的时间)

    也许你认为为什么我选择pascal代替其他的语言,像C.或者您会拿FreePascal和其他的pascal编译器作比较,那么好,这里您看看FreePascal为什么好: 1.pascal是一个非常简洁 ...

  10. TextReader/TextWriter 的类

    TextReader以及TextWriter这两个类,非常有用,很多方法都接受它们作为参数. TextReader有两个子类: StringReader/StringWriter 用于读取字符串: S ...