XMAL 中x名称控件的Auttribute
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的更多相关文章
- C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用)
C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用) 简单代码,记录一下.一个BackgroundWorker控件 backgroundWorkerRefr ...
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)
在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位?此时就要借助控件的.Anchor属性.Anchor属性定义控件的定位点位置.当控件锚定到某个 ...
- VISA资源名称控件
NI-VISA能自动检测端口.通过前面板上的VISA资源名称控件或VISA查找资源函数可查看端口列表.在任何平台上,NI-VISA支持的最大串口数量为256,串口的默认数量取决于操作系统. VISA资 ...
- EBS OAF 开发中的OAMessageRadioGroup控件
EBS OAF 开发中的OAMessageRadioGroup控件 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 简单介绍 RadioGro ...
- WPF-在Grid中编程添加控件
摘要: 在Grid中编程添加控件,布局控件的位置用到的代码是: gridLayout.Children.Add(textblock); Grid.SetRow(textblock, ); Grid.S ...
- vs2010中关于HTML控件与服务器控件分别和js函数混合使用的问题
此文档解决以下问题: 1.在.cs文件中如何访问html控件? 在html控件中添加属性runat="server"即可 2.在html控件中,如何调用js函数? 在html控件中 ...
- ASP.NET MVC 中使用用户控件——转
讲讲怎么在 ASP.NET MVC2中使用用户控件.首先我们新建一个用户控件, 我们命名为SelectGroup.ascx,代码如下 <%@ Control Language="C ...
- 怎样在不对控件类型进行硬编码的情况下在 C#vs 中动态添加控件
文章ID: 815780 最近更新: 2004-1-12 这篇文章中的信息适用于: Microsoft Visual C# .NET 2003 标准版 Microsoft Visual C# .NET ...
- C#中的BackgroundWorker控件
C#中的BackgroundWorker控件 Keywords: C# .NET BackgroundWorkerSource: http://txw1958.cnblogs.com/ Backg ...
随机推荐
- shell脚本例子
#!/bin/sh str="####" echo $1 | grep $str 1>/dev/null if [ `echo $?` -eq 0 ] then ec ...
- easyui datagrid detailview嵌套datagrid的问题
解决问题办法来自 http://www.coding123.net/article/20141113/easyui-datagrid-datailview-use-sub-datagrid-not-a ...
- 【Lucene4.8教程之五】Luke
一.Luke基本内容 1.Luke简介 Luke可用于查看Lucene创建的索引,并对其进行基本操作. 2.创建Luke (1)从Github上下载源文件 https://github.com/tar ...
- 【转】Memcached管理与监控工具----MemAdmin
原文连接:http://blog.csdn.net/ajun_studio/article/details/6746877 原文作者:halfMe 转载注明以上信息! 使用MemCached以后,肯定 ...
- information_schema.partitions 学习
1.partitions 表中的常用列说明: 1.table_schema:表所在的数据库名 2.table_name:表名 3.partition_method:表分区采用的分区方法 4.parti ...
- linq分组查询
string[] arrStr = { ".com", "www.baidu.com", "www.qq.com", "www.b ...
- select操作
// 1.判断select选项中 是否存在Value="paraValue"的Item function jsSelectIsExitItem(objSelect, ...
- C语言经典算法100例
[程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...
- javascript之Boolean
一.new Boolean(value); //构造函数 Boolean(value); //转换函数 0,NaN,null,"",undefined都会转成false,其他都会返 ...
- C# 内存泄露
一.事件引起的内存泄露 1.不手动注销事件也不发生内存泄露的情况 我们经常会写EventHandler += AFunction; 如果没有手动注销这个Event handler类似:EventHan ...