




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
教育部普通高等教育十二五國家級規劃教材
《C#程序設計及應用教程》第3版
(包括簡化版:《C#程序設計教程》第3版)
第9章資源與樣式控制2Ch9資源與樣式控制9.1文件屬性與文件資源9.2XAML資源和樣式控制9.3在Style元素中使用模板和觸發器9.4主題(Themes)9.5本地化處理9.1文件屬性與文件資源9.1.1WPF項目中的文件屬性9.1.2嵌入的資源和鏈接的資源9.1.3內容文件和SplashScreen349.1文件屬性與文件資源資源及資源文件資源是指項目中可以和C#代碼分離的固定不變的信息。資源文件是指不能直接執行的文件,例如圖像、字符串、圖標、聲音、視頻、XAML文件等。9.1.1WPF項目中的文件屬性樣式主題資源文件屬性9.1.1WPF項目中的文件屬性1.復制到輸出目錄不復制:指編譯項目時,不將該文件復制到輸出目錄。始終復制:指每次編譯項目時,都將該文件復制到輸出目錄下。如果較新則復制:指每次編譯項目時,如果項目下的文件比輸出目錄下的文件新,則將項目下的文件復制到輸出目錄。2.生成操作文件的【生成操作】(BuildAction)屬性有兩個含義,將該文件添加到項目中時如何對其進行處理編譯和部署項目時如何處理該文件5編譯項目時,將項目生成的文件保存在哪個文件夾下9.1.1WPF項目中的文件屬性69.1.1WPF項目中的文件屬性3.自定義工具自定義工具表示將文件添加到項目中時(新建文件或者添加現有文件),系統自動調用哪個工具對該文件進行轉換處理,以及在項目中如何保存轉換后的文件。該屬性為程序員轉換各種文件使其成為內容文件提供了靈活的處理手段。79.1.2嵌入的資源和鏈接的資源
簡介嵌入的資源將資源文件嵌入到Resource.resx中鏈接的資源將資源文件單獨保存在項目中,而在擴展名為.resx的文件中只保存資源文件的鏈接在WPF和Silverlight項目中,首選方式是將資源文件作為鏈接的資源,而不是作為嵌入的資源。89.1.2嵌入的資源和鏈接的資源1.嵌入的資源操作方式對于在多個項目之間共享的資源文件,如果不希望開發人員修改資源數據文件的內容,例如包含公司徽標、商標信息等文件,使用嵌入的資源也是一種可選擇的方案。【優缺點均有】一般將數據庫連接字符串作為嵌入的資源來保存。獲取:strings=Properties.Resource.ConnectionString;修改:雙擊Properties文件夾下的Resource.resx文件99.1.2嵌入的資源和鏈接的資源2.鏈接的資源簡介:鏈接的資源是指將文件添加到項目中時,在對應的擴展名為.resx的文件中只保存這些文件的相對路徑或鏈接,而被鏈接的這些文件仍然單獨存儲,而且可編輯。編譯項目時,這些文件連同與其對應的.resx文件一起被編譯到應用程序清單中,即嵌入到生成的.exe或者.dll文件中。操作方式:添加和刪除鏈接的資源文件見【操作演示】備注:對于容量比較大的文件(如圖像文件、視頻文件等),除非使用非常頻繁,否則一般不要將其作為資源來處理,而應該將其作為內容文件。109.1.3內容文件和SplashScreen1.內容文件內容文件是指將文件添加到項目中時,生成操作將該文件轉換為內容(Content)。內容文件是作為松散文件與可執行程序集一起分發的。雖然不將這些文件編譯到程序集中,但編譯時在程序集中保存了與這些文件的關聯。2.SplashScreenSplashScreen(初始屏幕)是指在顯示主窗口之前顯示的屏幕界面。初始屏幕由一幅圖像和一種背景色組成,建議使用透明的、大小為620×300像素的PNG圖像作為初始屏幕圖像。操作方式:【操作演示】119.2XAML資源和樣式控制9.2.1XAML資源9.2.2Style元素9.2.3在Style元素中設置屬性和事件9.2.4樣式的級聯控制9.2.5使用C#代碼定義和引用樣式129.2.1XAML資源簡介:XAML資源是指用XAML描述的在應用程序中的不同位置可以重用的對象,例如樣式(Style)、畫筆(Brush)等都是XAML資源。注意:XAML資源和擴展名為.resx的資源文件不是一個概念。換句話說,XAML資源的擴展名是.xaml而不是.resx,這些文件的【生成操作】屬性都是“Page”,而且這些文件都會被編譯到程序集中。1.聲明和引用XAML資源在XAML中,用元素的Resources屬性來聲明XAML資源。13<StackPanel>
<StackPanel.Resources><SolidColorBrushx:Key="MyBrush"Color="Gold"/>
<Stylex:Key="Title"TargetType="TextBlock">
<SetterProperty="HorizontalAlignment"Value="Center"/><SetterProperty="FontSize"Value="30"/></Style></StackPanel.Resources></StackPanel>9.2.1XAML資源引用資源在元素的Resource屬性中聲明了XAML資源以后,就可以在該元素的子元素中利用XAML標記擴展引用聲明的XAML資源。14<Page.Resources><Stylex:Key="TitleText"TargetType="TextBlock"><SetterProperty="HorizontalAlignment"Value="Right"/><SetterProperty="FontFamily"Value="楷體"/><SetterProperty="FontSize"Value="16"/></Style></Page.Resources><TextBlockStyle="{StaticResourceTitleText}">你好!</TextBlock>聲明引用9.2.1XAML資源2.靜態資源和動態資源XAML資源分類:靜態資源(StaticResource)是指用{StaticResourcekeyName}標記擴展引用的資源。執行速度快,但無法動態改變動態資源(DynamicResource)是指用{DynamicResourcekeyName}標記擴展引用的資源。可以動態改變,但執行速度慢159.2.2Style元素WPF應用程序中的樣式是利用XAML資源來實現的。即在XAML資源中用Style元素聲明樣式和模板,并在控件中引用它。Style元素的常用形式為<Stylex:Key=鍵值TargetType="控件類型"BasedOn="其他樣式中定義的鍵值">
……</Style>169.2.2Style元素1.隱式樣式設置(只聲明TargetType)2.顯式樣式設置(只聲明x:Key)3.同時聲明x:Key和TargetType4.樣式繼承(聲明中包含BasedOn)如果樣式聲明中包含BasedOn,則該樣式將繼承BasedOn中定義的樣式。其效果就是將該樣式和BasedOn中的樣式合并起來共同起作用。179.2.3在Style元素中設置屬性和事件簡介:在Style元素中,用Setter設置元素的屬性實現樣式定義,用EventSetter設置事件。1.屬性設置(1)用特性語法定義Setter(2)用屬性語法定義Setter18用特性語法定義Setter時,每個Setter都必須包括Property屬性和Value屬性。例如:<SetterProperty="FontSize"Value="32pt"/>當某些屬性無法用特性語法來描述時,也可以用屬性語法來實現,此時在Setter元素中定義Property屬性,在Setter元素的子元素中定義Value屬性。<SetterProperty="RenderTransform"><Setter.Value><TranslateTransformX="0"Y="10"/></Setter.Value></Setter>9.2.3在Style元素中設置屬性和事件2.事件設置:在XAML資源的<Style>和</Style>之間,可以用EventSetter設置事件。19<Window.Resources><StyleTargetType="Button"><SetterProperty="Background“Value="AliceBlue"/>
<EventSetterEvent="Click"Handler="Button_Click"/></Style></Window.Resources><StackPanel><ButtonContent="按鈕1"/><ButtonContent="按鈕2"Click="Button2_Click"/></StackPanel>privatevoidButton2_Click(objectsender,RoutedEventArgse){stringbtnContent=(e.SourceasButton).Content.ToString();MessageBox.Show(btnContent);e.Handled=true;}在Button2_Click事件中,如果不加e.Handled=true;,則單擊此按鈕時,將彈出兩次消息框。一次是自身引發的,另一次是樣式引發的。9.2.4樣式的級聯控制簡介:在XAML中,最基本的樣式控制形式就是用內聯式來實現。除了內聯樣式以外,還可以在XAML資源中聲明樣式,然后在控件中引用這些樣式。分類:根據XAML資源聲明的位置,可將樣式定義分為元素樣式應用程序樣式資源字典
將這些樣式通過Style標記的BasedOn依次繼承(級聯),再將其和內聯式結合起來,就可以得到最終的有效樣式。209.2.4樣式的級聯控制1.內聯式內聯式是指在元素的開始標記內直接用特性語法聲明元素的樣式。21<StackPanel><TextBlockFontSize="24"FontFamily="楷體">文本1</TextBlock><TextBlockFontSize="24"FontFamily="楷體">文本2</TextBlock></StackPanel>內聯式適用于單獨控制元素樣式的情況。優點是設置樣式直觀、方便缺點是無法一次性設置所有窗口或頁面中相同的樣式9.2.4樣式的級聯控制2.框架元素樣式框架元素樣式是指在框架元素(包括根元素)的Resource屬性中定義的樣式,這種樣式的作用范圍為該元素的所有子元素。框架元素是指從FrameworkElement或FrameworkContentElement繼承的元素,根元素(Window、Page、UserControl等)只是一種特殊的框架元素。22【例9-1】演示框架元素樣式的基本用法運行后9.2.4樣式的級聯控制23【例9-2】演示根元素樣式的基本用法運行后9.2.4樣式的級聯控制3.應用程序樣式應用程序樣式是指在App.xaml文件的Application.Resources屬性中聲明的樣式。這種樣式的作用范圍為整個應用程序項目,對項目中的所有窗口或頁面都起作用。24【例9-3】演示應用程序樣式的基本用法運行后9.2.4樣式的級聯控制4.資源字典資源字典是指在單獨的XAML文件中用ResourceDictionary定義的樣式。在元素樣式、應用程序樣式中都可以包含ResourceDictionary。定義資源字典后,既可以讓其只對某個元素或者某一頁起作用,也可以對項目的所有元素都起作用。另外,還可以在一個ResourceDictionary中合并其他的ResourceDictionary。25【例9-4】演示資源字典的基本用法9.2.5使用C#代碼定義和引用樣式用XAML定義的資源如果聲明了鍵(Key),則可以在C#代碼中訪問這些資源。實際上,不論是哪種XAML資源,編譯或執行應用程序的時候,這些XAML資源最終都會被整合到WPF應用程序的ResourceDictionary對象中,供C#代碼訪問。26<BorderName="border1"><Border.Resources><Stylex:Key="backgroundKey"TargetType="Border"><SetterProperty="Background"Value="Blue"/></Style></Border.Resources></Border>ResourceDictionaryd1=border1.Resources;d1.Add("backgroundKey",Brushes.Blue);聲明訪問9.2.5使用C#代碼定義和引用樣式27【例9-5】演示如何用C#代碼定義和引用樣式9.3在Style元素中使用模板和觸發器9.3.1模板在XAML資源的Style元素中,可以利用模板自定義控件的外觀9.3.2觸發器某種條件發生變化時自動觸發某些動作289.3.1模板1.樣式模板化樣式模板化是指利用控件模板(ControlTemplate)定義控件的外觀,從而讓控件呈現出各種形式。在Style中,用Template屬性定義控件的模板。29【例9-6】演示樣式模板化的基本用法2.數據模板化:略9.3.2觸發器1.屬性觸發器屬性觸發器是指用控件的屬性作為觸發條件,即當對象的屬性發生變化時自動更改對應的其他屬性。有兩種類型的屬性觸發器,一種是Trigger,用于單條件觸發;另一種是MultiTrigger,用于多條件觸發。30<StyleTargetType="Button"><SetterProperty="Width"Value="60"/><Style.Triggers><TriggerProperty="IsMouseOver"Value="True"><SetterProperty="Width"Value="80"/></Trigger></Style.Triggers></Style>9.3.2觸發器2.事件觸發器事件觸發器(EventTrigger)是指用路由事件(RoutedEvent)作為觸發條件,即當引發指定的路由事件時啟動一組操作,例如動畫等。31<Style.Triggers><EventTriggerRoutedEvent="Mouse.MouseEnter"><EventTrigger.Actions><BeginStoryboard><Storyboard><DoubleAnimationDuration="0:0:0.2"Storyboard.TargetProperty="Height"To="90"/></Storyboard></BeginStoryboard></EventTrigger.Actions></EventTrigger>………9.3.2觸發器3.數據觸發器數據觸發器(DataTrigger和MultiDataTrigger):DataTrigger用控件的DataContext的屬性作為觸發條件。MultiDataTrigger用控件的DataContext的多個屬性作為觸發條件。32【例9-7】演示觸發器的基本用法9.4主題(Themes)9.4.1系統主題9.4.2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合理膳食-促進健康
- 金屬期貨AI應用企業制定與實施新質生產力項目商業計劃書
- 健康食品快閃店行業跨境出海項目商業計劃書
- 電磁屏蔽硅橡膠電纜護套行業深度調研及發展項目商業計劃書
- 高考地理綜合題解析與行業深度調研及發展項目商業計劃書
- 環保型硅橡膠密封條行業深度調研及發展項目商業計劃書
- 2025年能源行業儲能技術多元化發展態勢分析報告
- 2025-2030中國自助旅游行業市場發展分析及發展趨勢與投資前景研究報告
- 2025-2030中國網絡證券行業市場發展分析及發展趨勢與投資研究報告
- 2025-2030中國糧油及其制品行業發展趨勢及投資投融資戰略研究報告
- 一型糖尿病患者健康宣教
- 高中歷史學科知識講座
- 杭州西奧電梯有限公司招投標數據分析報告
- 陪診服務的項目計劃書
- 井控設備課件
- 假設檢驗完整
- 14S501-2 雙層井蓋圖集
- 吉林市生育保險待遇申領審批表
- 2021年成人高等教育學士學位英語水平考試真題及答案
- 人教版八年級下冊數學期末試卷綜合測試卷(word含答案)
- 卵巢過度刺激綜合征(OHSS)
評論
0/150
提交評論