1. xaml文件怎麼運行
Xaml文件基於XML,本質上是一個只是一個文本文件而已,用記事本可以打開,怎麼能運行呢??
微軟的WPF和Silverlight和WP7都是基於Xaml和C#,XP下肯定是可以運行WPF程序的,你VS2010要裝一個VS2010SP1,NET Framework要大於4.0(雖然WPF是3.5的產物,但VS2010是和4.0配套的),但是你也不用另外單獨去安裝NET Framework4.0,因為你在裝VS2010的時候他就會自動把NET Framework4.0裝裝上去
如果你不是開發人員,僅僅只是想要運行一個WPF編譯生成的程序,那隻要安裝對應的NET Framework就行了,至於是3.5還是4.0,你要看人家編寫這個程序的人調用了哪個框架里的函數,NET Framework3.5是運行一個WPF程序最基本的條件,但如果程序里有調用4.0里的函數,那麼你NET Framework3.5就不夠了。最簡單的,你裝個NET Framework的最新版本就是了,這樣一定沒問題
2. 如何在代碼中操作xaml中的元素
XAML 根元素和 xmlns
一個 XAML 文件只能有一個根元素,這樣才能成為格式正確的 XML 文件和有效的 XAML 文件。通常,應選擇屬於應用程序模型一部分的元素(例如,為頁面選擇 Window 或 Page,為外部字典選擇 ResourceDictionary,或為應用程序定義根選擇 Application)。下面的示例演示 WPF 頁面的典型 XAML 文件的根元素,其中的根元素為 Page。
根元素還包含屬性 xmlns 和 xmlns:x。這些屬性向 XAML 處理器指明哪些命名空間包含標記將要引用的元素的元素定義。xmlns 屬性專門指示默認的 xmlns 命名空間。在默認的 xmlns 命名空間中,可以不使用前綴指定標記中的對象元素。對於大多數 WPF 應用程序方案以及 SDK 的 WPF 部分中給出的幾乎所有示例,默認的 xmlns 命名空間均映射為 WPF 命名空間 http://schemas.microsoft.com/winfx/2006/xaml/presentation。xmlns:x 屬性指示另外一個 xmlns 命名空間,該命名空間映射 XAML 語言命名空間 http://schemas.microsoft.com/winfx/2006/xaml。在具有此映射的文件的標記中引用時,XAML 規范定義的必需語言組件帶有 x: 前綴。使用 xmlns 定義用法范圍和映射的這種做法符合 XML 1.0 規范。請注意,xmlns 屬性僅在每頁的根元素上和應用程序定義上(如果在標記中提供了應用程序定義)才是嚴格必需的。xmlns 定義將應用於根的所有子元素。(此行為仍然符合 xmlns 的 XML 1.0 規范。)xmlns 屬性還允許出現在根下面的其他元素上,並且將應用於定義元素的任何子元素。但是,此用法並不典型,因為頻繁定義或重新定義 xmlns 命名空間可能會導致 XAML 標記樣式難以閱讀。
由於存在屬於項目生成文件一部分的配置,因此可以知道 WPF 程序集包含的某些類型支持 WPF 到默認 xmlns 的映射。程序集還映射到目標文件中。因此,為了引用來自 WPF 程序集的 XAML 元素,只需映射 xmlns 即可。對於您自己的自定義程序集,或者除 WPF 之外的程序集,可以將該程序集指定為 xmlns 映射的一部分。通常,可選擇其他前綴,但是也可以選擇其他 xmlns 作為默認值,然後將 WPF 映射到前綴。
x: 前綴
在前面的根元素示例中,前綴 x: 用於映射 XAML xmlns http://schemas.microsoft.com/winfx/2006/xaml。在此 SDK 的項目模板、示例以及文檔中,此 x: 前綴將用於映射 XAML xmlns。x: 前綴/XAML xmlns 包含多個將在 XAML 中頻繁用到的編程構造。下面列出了將用到的最常見 x: 前綴/XAML xmlns 編程構造:
x:Key:為 ResourceDictionary 中的每個資源設置一個唯一的鍵。在應用程序標記中看到的所有 x: 用法中,x:Key 可能佔到 90%。
x:Class:向為 XAML 頁提供代碼隱藏的類指定 CLR 命名空間和類名。必須具有這樣一個類才能支持代碼隱藏,也正是由於這個原因,即使沒有資源,您也幾乎總是會看到映射的 x:。
x:Name:處理對象元素後,為運行時代碼中存在的實例指定運行時對象名稱。在不支持等效的 WPF 框架級Name 屬性的情況下命名元素時,可以使用 x:Name。某些動畫方案中會發生這種情況。
x:Static:啟用一個獲取靜態值的值引用,該靜態值只能是一個 XAML 可設置屬性。
x:Type:根據類型名稱構造一個 Type 引用。它用於指定採用 Type 的屬性 (Attribute),如 Style..::.TargetType,不過在許多情況下屬性 (Property) 本身具有字元串到 Type 的轉換功能,因此使用 x:Type 是可選的。
x: 前綴/XAML xmlns 中還有其他一些不太常見的編程構造。
事件和 XAML 代碼隱藏
大多數 WPF 應用程序都是既包括標記,又包括代碼隱藏。在一個項目中,XAML 被編寫為 .xaml 文件,而使用 CLR 語言(如 Microsoft Visual Basic .NET 或 C#)編寫代碼隱藏文件。編譯 XAML 文件時,每個 XAML 頁的 XAML 代碼隱藏文件的位置是通過指定一個命名空間和類作為 XAML 頁的根元素的 x:Class 屬性來確定的。
在目前已介紹的示例中,您已看到幾個按鈕,但還沒有一個按鈕具有任何關聯的邏輯行為。為對象元素添加行為的主要應用程序級機制是使用元素類的現有事件,並為在運行時引發該事件時調用的該事件編寫特定的處理程序。事件名稱以及要使用的處理程序的名稱在標記中指定,而實現處理程序的代碼在代碼隱藏中定義。
3. WPF,反編譯工具能看到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
4. 一個wpf命名空間問題
這個問題我也碰到了。
1. 如果你是在Blend中寫XAML和編譯,一般都是出錯的
2. 建議你到VS中,在XAML中引入local命名空間。local=""時,會自動彈出下拉提示的,你只要輸入你的命名空間,不用輸入那一長串,然後在彈出的下拉提示中選擇即可。
3. 後面使用時,VS中可能還會有紅色波浪線報錯,但是編譯能通過,肯定不會出錯。
5. XAML與C#與WPF三者到底有什麼關系
XAML是.NET體系開發程序或者網頁時前台編程的一種布局方式或者說開發語言,可以比較自由的用標簽的方式進行布局,借鑒了HTML和XML等語言的風格,並且加入了一些動畫等的實現。
C#則是後台邏輯開發用的編程語言,這個應該不用多說。
WPF則是微軟准備代替C#.NET中Forms編程方式的一種全新編程方式,其方式就是前台採用XAML控制布局,後台可以用C#,VB,C++等來相應,相當於前面用XAML寫了個控制項,而其控制邏輯指引到後台的函數邏輯中,而C#就是編寫邏輯的支持語言之一。
這么說應該能理解了吧~
6. xaml是什麼和xml有什麼關系嗎
簡介XAML是eXtensible Application Markup Language的英文縮寫,相應的中文名稱為可擴展應用程序標記語言,它是微軟公司為構建應用程序用戶界面而創建的一種新的描述性語言。XAML提供了一種便於擴展和定位的語法來定義和程序邏輯分離的用戶界面,而這種實現方式和ASP.NET中的"代碼後置"模型非常類似。也就是說在開發一個應用程序時,我們可以將開發工作分成開發人員和設計人員兩個團體分別進行,各自負責後台程序代碼邏輯和前台程序界面的設計,這樣就使得開發人員和設計人員之間的協作更通暢,也極大地發揮了他們的專長。 提示 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是一種解析性的語言,盡管它也可以被編譯。微軟推薦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 上運行。 XAML是XML的一種,用著WPF中 XAML除了有標記語言、XML的優點外,還有如下一些優點: 用XAML設計UI更簡單 XAML比其他的UI設計技術所需編碼更少。 XAML設計的UI方便轉移、方便在其他環境提交。比如在Web或Windows Client。 用XAML設計動態UI非常容易 XAML給UI設計人員帶來新的革命,現在所有的設計人員不再需要.NET開發的知識同樣可以設計UI。在不遠的將來,終端用戶可以看到更漂亮的UI。
7. WPF反編譯之後的xaml如何恢復
先點上邊的顯示所有文件,排除的文件就會顯示出來了,在文件上右擊,選 「包括在項目中"
8. 什麼是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 上搜索受信任的站點所發布的轉換工具。
9. WPF應用程序會被反編譯嗎
------解決方案--------------------
WPF程序當然能被反編譯,但是xaml部分會變成bmal,不過內容和原先的xmal出入很大
------解決方案--------------------
沒做混淆的都能反編譯。問題是很難再改了。除非代碼量很少的。