編譯xaml
1. XAML是否有調試模式條件編譯指令
你好,
與if類似的條件編譯指令為#if和#ifdef。 條件編譯指令屬於預編譯語句,即編譯器在執行編譯工作時
2. 什麼是XAML簡單給我說一下吧
簡介也就是說在開發一個應用程序時,我們可以將開發工作分成開發人員和設計人員兩個團體分別進行,各自負責後台程序代碼邏輯和前台程序界面的設計,這樣就使得開發人員和設計人員之間的協作更通暢,也極大地發揮了他們的專長。 提示: XAML的發音為"Zamel"(有些人讀做"zammel"),筆者經常開玩笑地將其讀成"折磨"。雖然XAML包含了許多新規則、元素和語法,但是我並不認為學習它是一個折磨人的過程。只要讀者稍微具備一些HTML基礎知識,就可以快速地掌握XAML中的大部分內容。如今在WPF的官方網站上已經提供了一些很實用的工具,可以將其他格式的圖形文件轉換為XAML文件的形式。例如我們就可以將3DMax製作出的3D動畫轉換為XAML,這樣WPF程序就可以直接通過轉換好的XAML文件產生和3DMax製作出的3D動畫相一致的效果。 編輯本段優點 XAML簡化了.Net Framework 3.0 編程模式上的用戶界面創建過程,使用XAML開發人員可以對WPF程序的所有用戶界面元素(例如文本、按鈕、圖像和列表框等)進行詳細的定置,同時還可以對整個界面進行合理化的布局,這與使用HTML非常相似。但是由於XAML是基於XML的,所以它本身就是一個組織良好的XML文檔,而且相對於HTML,它的語法更嚴謹、更明確。預計以後大部分的XAML都可由相應的軟體自動生成,就如同我們現在製作一個靜態頁面時,幾乎不用編寫任何HTML代碼就可以直接通過Dreamweaver軟體生成一個美觀的頁面。但是最初通過手動編寫XAML代碼將是一次絕佳的學習體驗,雖然實現的過程繁雜了些,但是將加深您對XAML語法和各個元素的理解。 大多數的WPF程序可能同時包含程序代碼和 XAML。我們可以使用XAML定義應用程序的初始界面,而後才編寫相應的功能實現代碼。我們可以將邏輯代碼直接嵌入到一個XAML文件中,也可以將它保留在一個單獨的文件中。實際上,能夠用XAML實現的所有功能我們都可以使用程序代碼來完成。因此,我們根本無需使用任何的XAML就可以創建一個完好的WPF程序。一般來說,程序代碼的優勢在於流程處理和邏輯判斷,而不是界面的構建上。而XAML則是集中關注於界面的編程,我們可以將它和其它的.NET語言配合使用,從而構建出一個功能完善、界面美觀的WPF程序。XAML是一種純正的、用來描述用戶界面構成元件和編排方式的標記語言。盡管有部分的XAML語法具備程序設計語言的特性(例如XAML中的Trigger和TRansform),但是XAML並不是一種用於程序設計的語言,它的功能也不是為了執行應用程序邏輯。 微軟推薦XAML被編譯成BAML(Binary Application Markup Language-二進制語言程序標記語言)。XAML和BAML都可以被WPF解析,並且將以一種和HTML相似的方式進行界面的呈現。但是和HTML不同的是,XAML是強類型化的。也就是說,HTML會忽略那些它不能識別的元素和屬性,而XAML必須在識別所有的元素和屬性的情況下,才對頁面進行呈現。盡管在XAML中各個屬性都是以一個個的字元串(例如Background)表示的,但是這些字元串實際上代表的是WPF中的對象,只有被WPF識別的對象才可以作為元素的屬性,所以我們說XAML是強類型化的。 編輯本段XAML並不是HTML 還有一點是我們反復強調的,XAML並不是HTML。盡管XAML在元素的聲明、程序樣式的設置和指定事件處理程序上都和HTML非常類似,但是XAML是基於XML的,它是WPF的外在表現形式。而HTML主是一種標記語言,僅僅是用來為瀏覽器呈現頁面內容。XAML除了用來呈現信息和請求用戶輸入等基本的功能外,它還包含了一些高級的特性,例如它提供了對動畫和3D眾多方面的支持。 XAML是可擴展的,正如它的名字指明的那樣。開發人員可以創建自定義的控制項、元素和函數來擴展XAML。而且由於XAML各元素在本質上就是WPF類的映射,所以開發人員可以很輕松地使用面向對象的技術對XAML元素進行擴展。也就是說我們可以開發一些自定義控制項和組合元素,並將它公開給用戶界面設計人員和其它的開發人員使用。 XAML、Windows Presentation Foundation 和 Microsoft .NET Framework 3.0 XAML 是 Microsoft® Windows Presentation Foundation (WPF) 的一部分。WPF 是 Microsoft® .NET Framework 3.0 中處理基於 Windows 的應用程序或基於 Web 瀏覽器的客戶端應用程序的可視外觀的一類功能。基於 WPF 的應用程序可以在 Windows Vista? 上運行,也可以在安裝了 Microsoft .NET Framework 3.0(如果是基於 Web 瀏覽器的客戶端應用程序,還需要安裝 Internet Explorer 7.0)的早期版本的 Windows 上運行。 編輯本段應用 WPF 藉助 XAML 來利用標記而不是編程語言(如 C#)來構造精美逼真的用戶界面 (UI)。您可以通過定義控制項、文本、圖像、形狀、動畫等各種元素,完全採用 XAML 來製作詳盡的 UI 文檔。由於 XAML 是聲明性語言(類似於 HTML),因此如果需要向應用程序中添加運行時邏輯,則需要添加代碼。例如,如果應用程序僅使用 XAML,您不僅可以創建並動態顯示 UI 元素,還可以對這些元素加以配置令其以受限方式響應用戶輸入(通過使用事件觸發器)。但是,在不添加代碼的情況下,該應用程序將不能執行和響應計算,也不能自行創建新的 UI 元素。XAML 應用程序的代碼存儲在不同於 XAML 文檔的單獨文件中。這種將 UI 設計與基礎代碼相脫離的方式,使得開發人員和設計人員能夠更加密切地合作完成同一個項目,而不會延誤各自的進度。 編輯本段XAML、代碼和Expression Blend 在 Expression Blend 中,任何給定文檔的 XAML 均存儲在 .xaml 文件中。如果 XAML 文檔有相應的基礎代碼,該代碼將存儲在文件名相同但另行添加 .cs 或 .vb 擴展名的文件中。例如,如果 XAML 文檔名為「Window1.xaml」,則當代碼的編程語言為 C# 時,代碼隱藏文件名為「Window1.xaml.cs」。 在生成項目時,WPF 分析程序將讀取該項目的 .xaml 文件,並報告所產生的任何錯誤。同樣地,在 Expression Blend 中打開現有項目時,分析程序將讀取項目文件夾中包含的 .xaml 文件,嘗試分析元素並在「設計」視圖中的美工板上顯示文檔。在這兩種情況下,如果分析程序遇到錯誤,將禁用美工板,並且 Expression Blend 將顯示一則錯誤消息,其中包含用於打開「XAML」視圖的鏈接,以便您糾正該錯誤。分析錯誤也會報告在「結果」面板中的「錯誤」選項卡上。 編輯本段XAML在設計應用程序間發揮資源均衡作用 您可以從 Microsoft® Expression® Design 中將美術資源導出為 XAML,然後將該 XAML 作為資源導入到 Expression Blend 中,以便在 Expression Blend 項目中利用這些資源。其他一些設計應用程序也提供了各種將美術資源轉換為 XAML 的工具。您可以在 Internet 上搜索受信任的站點所發布的轉換工具。
3. xaml編譯後在xap中什麼形式
XAP文件是Silverlight 2應用程序編譯打包後的一個文件,它是一個標準的zip壓縮文件,包括了Silverlight 2應用程序所需的一切文件,如程序集、資源文件等。XAP文件是什麼XAP文件是Silverlight 2應用程序編譯打包後的一個文件,包括了Silverlight 2應用程序所需的一切文件,如程序集、資源文件等。這里的xap並沒有任何特殊的意義,僅僅是Silverlight 2應用程序編譯後生成文件的擴展名而已,本質上它是一個標準的zip壓縮文件。我們可以修改.xap文件後綴為.zip文件,並用解壓縮工具打開,可以看到其中包含的文件: 如何使用XAP文件xap文件的使用想必大家都已經熟知了,在ASP.NET頁面中,我們可以使用Silverlight Control引用xap文件,如下代碼所示: 注意Silverlight控制項依賴於ScriptManager,因此在ASP.NET頁面上必須要有一個ScriptManager控制項。在HTML頁面(或者PHP、JSP等)中,我們可以使用如下的方式: 這里的type="application/x-silverlight-2-b2" 指定了當前版本為Silverlight 2 Beta 2,後面的超鏈接指定了當用戶的機器上沒有安裝Silverlight 2插件時的下載地址及顯示的圖片。 XAP文件如何執行一旦我們引用了一個xap文件,在應用程序運行時Silverlight插件將會下載該xap文件並在一個獨立的子窗口中運行,如下圖所示: XAP文件包含什麼在本文一開始我們就說,XAP文件包含了Silverlight 2應用程序所需的一切文件,如程序集、資源文件等,但它至少會包含兩個文件,一個是當前Silverlight應用程序的程序集,另一個是AppManifest.xaml文件。AppManifest.xaml文件相當於是一個清單(類似於庫存單一樣),如下代碼所示:http://schemas.microsoft.com/client/2007/deployment" xmlns:x=" http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="XapFileExplain" EntryPointType="XapFileExplain.App" RuntimeVersion="2.0.30523.6"> <?XML:NAMESPACE PREFIX = [default] 它至少包括了如下幾個方面的信息:1.應用程序入口點的程序集2.應用程序入口點的類型3.應用程序運行時的版本4.應用程序相關的所有程序集XAP文件如何生成XAP文件在Silverlight項目編譯時由開發環境自動生成,一般情況下,不需要我們手工進行控制。這里大家可能會想到一個問題,如果打包在XAP文件中的程序集過多,會造成文件體積變大,有些程序集雖然我們在程序中用到了,但並不是一下載XAP文件就要用到,可能是某一特定的時刻才會用,那這樣可不可以只打包一些必須的程序集,而其它的在需要時再下載呢?答案自然是肯定的。如我們程序中用到了System.Windows.Controls.Extended程序集,但我們又不想它打包在xap文件中,該如何做呢?可以通過設置程序集屬性實現,如下圖所示: 我們可以設置程序集的Copy Local屬性為False,這樣該程序集將不會打包在XAP文件中,等需要時我們可以在手工進行下載,如使用WebClient進行下載等。
4. WPF反編譯之後的xaml如何恢復
先點上邊的顯示所有文件,排除的文件就會顯示出來了,在文件上右擊,選 「包括在項目中"
5. 反編譯工具能看到XAML嗎
1. 首先,手動創建一個WPF工程(WpfApplicationReflectorDemo)
2. 把生成的WpfApplicationReflectorDemo.exe 拖到ILSpy里
3. 點擊 File -> Save Code...: 相應的代碼會生成到指定地方。
4. 打開應用程序,並且編譯它,此時程序會報如下錯誤。主要原因是缺少相應的WPF所必備的DLL--WindowsBase和PresentationCore。添加這兩個dll之後程序會編譯通過。
5. 這時我們還需要把相應的.XAML添加到應用程序中,我們在WpfApplicationReflectorDemo這個目錄下添加與MainWindow.cs相關的MainWindow.xaml並且修改MainWindow.cs -->MainWindow.xaml.cs.與WPF的風格保持一致。這個時候我們需要把第二步看到的mainwindow.baml.中的內容添加到剛剛加入的MainWindow.xaml
6. 這時我們需要到MainWindow.xaml.cs去刪除一些多餘反編譯出來的屬性,欄位和方法。並且在public class MainWindow加訪問修飾符 partial
[GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
internal TextBlock textBlock1;
private bool _contentLoaded;
public void InitializeComponent()
void IComponentConnector.Connect
7.添加App.xaml.去刪除一些多餘反編譯出來的屬性和方法.並且在public class App加訪問修飾符 partial
[GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent()
7. 最後刪掉mainwindow.baml
6. WPF編程寶典——C#2010版的目錄
第1章 WPF概述
1.1 Windows圖形演化
1.1.1 DirectX:新的圖形引擎
1.1.2 硬體加速與WPF
1.2 WPF:高級API
1.2.1 Windows窗體將繼續保留
1.2.2 DirectX也將繼續保留
1.2.3 Silverlight
1.3 解析度無關性
1.3.1 WPF單位
1.3.2 系統DPI
1.3.3 點陣圖和矢量圖形
1.4 WPF體系結構
1.5 WPF4
1.5.1 新特性
1.5.2 WPF工具包
1.5.3 VisualStudio2010
1.6 小結
第2章 XAML
2.1 理解XAML
2.1.1 WPF之前的圖形用戶界面
2.1.2 XAML變體
2.1.3 XAML編譯
2.2 XAML基礎
2.2.1 XAML名稱空間
2.2.2 代碼隱藏類
2.3 XAML中的屬性和事件
2.3.1 簡單屬性與類型轉換器
2.3.2 復雜屬性
2.3.3 標記擴展
2.3.4 附加屬性
2.3.5 嵌套元素
2.3.6 特殊字元與空白
2.3.7 事件
2.3.8 完整的EightBall示例
2.4 使用其他名稱空間中的類型
2.5 載入和編譯XAML
2.5.1 只使用代碼
2.5.2 使用代碼和未經編譯的XAML
2.5.3 使用代碼和編譯過的XAML
2.5.4 只使用XAML
2.6 XAML2009
2.6.1 自動事件連接
2.6.2 引用
2.6.3 內置類型
2.6.4 高級的對象創建
2.7 小結
第3章 布局
3.1 理解WPF中的布局
3.1.1 WPF布局原則
3.1.2 布局過程
3.1.3 布局容器
3.2 使用StaCkPanel面板進行簡單布局
3.2.1 布局屬性
3.2.2 對齊方式
3.2.3 邊距
3.2.4 最小尺寸、最大尺寸以及顯式地設置尺寸
3.2.5 Border控制項
3.3 wrapPanel面板和DockPanel面板
3.3.1 wrapPanel面板
3.3.2 DockPanel面板
……
第4章 依賴項屬性
第5章 路由事件
第6章 控制項
第7章 application類
第8章 元素綁定
第9章 命令
第10章 資源
第11章 樣式和行為
第12章 形狀、畫刷和變換
第13章 幾何圖形和圖畫
第14章 效果和可視比對象
第15章 動畫基礎
第16章 高級動畫
第17章 控制項模板
第18章 自定義元素
第19章 數據綁定
第20章 格式化綁定的數據
第21章 數據視圖
第22章 列表、網格和樹
第23章 窗口
第24章 頁面和導航
第25章 菜單、工具欄和功能區
第26章 聲音和視頻
第27章 3d繪圖
第28章 文檔
第29章 列印
第30章 與windows窗體的交互
第31章 多線程
第32章 插件模型
第33章 clickonce部署