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>

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com