日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】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>

總結

以上是生活随笔為你收集整理的【转】9、XAML名称空间详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。