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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF快速指导2:模板

發(fā)布時(shí)間:2023/12/19 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF快速指导2:模板 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WPF快速指導(dǎo)2:模板
??? 本文摘要:
??? 1:模板作用;
??? 2:樣式模板;
??? 3:數(shù)據(jù)模板;
??? 4:如何使用ControlTemplate;
??? 5:如何使用DataTemplate;

?

一:模板作用
??? 1:樣式模板,在應(yīng)用程序內(nèi)部維護(hù)和共享外觀;
??? 2:數(shù)據(jù)模板,實(shí)現(xiàn)表現(xiàn)形式和邏輯的分離;


二:樣式模板

??? 如:
??? 片段1:???

<Style TargetType="TextBlock"><Setter Property="HorizontalAlignment" Value="Center" /><Setter Property="FontFamily" Value="Comic Sans MS"/><Setter Property="FontSize" Value="14"/></Style>
??? 以上的樣式模板用于對(duì)頁面范圍內(nèi)TextBlock進(jìn)行規(guī)范。注意Style中一個(gè)屬性關(guān)鍵字BaseOn,如:
片段2??? <Style BasedOn="{StaticResource {x:Type TextBlock}}"TargetType="TextBlock"x:Key="TitleText">……</Style>
??? 這個(gè)屬性標(biāo)識(shí)是指如上的風(fēng)格基于片段1,同時(shí)進(jìn)行拓展。
關(guān)于樣式模板需要注意的幾個(gè)方面:
1:如果有多個(gè) Setter 對(duì) Style 的同一屬性進(jìn)行設(shè)置,則最后聲明的 Setter 優(yōu)先;
2:以編程方式設(shè)置屬性,textblock1.Style = (Style)(this.Resources["TitleText"]);


三:數(shù)據(jù)模板

??? 數(shù)據(jù)模板的作用就是實(shí)現(xiàn)表現(xiàn)形式和邏輯的分離。
??? 查看如下的代碼片段,
??? 片段3:????

<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}" > </ListBox>

??? 這就意味著這個(gè)ListBox的數(shù)據(jù)源是資源中定義的MyPhotos數(shù)據(jù)源,如下:
??? 片段4????

<Window.Resources><ObjectDataProvider x:Key="MyPhotos" ObjectType="{x:Type local:PhotoList}"/></Window.Resources>

??? 這個(gè)資源定義中有一個(gè)Package名local,我們?nèi)缦露x:
??? xmlns:local="clr-namespace:WpfApplication2"
??? 同時(shí)也指定了數(shù)據(jù)源的類型為PhotoList,即存在類為PhotoList以及PhotoList所對(duì)應(yīng)的Item,類Photo。
??? 在UI呈現(xiàn)的時(shí)候,需要為MyPhotos動(dòng)態(tài)添加數(shù)據(jù),添加數(shù)據(jù)的代碼如下:

PhotoList Photos;private void WindowLoaded(object sender, RoutedEventArgs e){Photos = (PhotoList)(this.Resources["MyPhotos"] as ObjectDataProvider).Data;Photos.Path = "...\\...\\Images";}

??? 注意,以上代碼如果運(yùn)行的話,ListBox呈現(xiàn)的是Photo的ToString()。要按照我們的需求顯示實(shí)際的圖片,仍舊需要定義DataTemplate,即
??? 片段5:

<DataTemplate DataType="{x:Type local:Photo}"> <Border Margin="3"> <Image Source="{Binding Source}"/> </Border> </DataTemplate>

四:如何使用ControlTemplate
??? WPF 中的許多控件都使用 ControlTemplate 來定義控件的結(jié)構(gòu)和外觀,這樣可將控件外觀和控件功能分離開。 重新定義控件的 ControlTemplate 可以徹底改變控件的外觀。使用ControlTemplate還可以創(chuàng)建自定義控件,在這里不做贅述。
??? 改變現(xiàn)有控件的一個(gè)典型例子如下:????

<Style TargetType="Button"><!--Set to true to not get any properties from the themes.--><Setter Property="OverridesDefaultStyle" Value="True"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Grid><Ellipse Fill="{TemplateBinding Background}"/><ContentPresenter HorizontalAlignment="Center"VerticalAlignment="Center"/></Grid></ControlTemplate></Setter.Value></Setter></Style>

五:如何使用DataTemplate

??? DataTemplate 可用于自定義數(shù)據(jù)在控件上的顯示方式。除了自定義數(shù)據(jù)外觀之外,DataTemplate 還可以包含 UI 元素,這樣大大增加了自定義 UI 的靈活性。DataTemplate的用法見下一章。


本文轉(zhuǎn)自最課程陸敏技博客園博客,原文鏈接:http://www.cnblogs.com/luminji/archive/2011/01/09/1931392.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的WPF快速指导2:模板的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。