❶ xaml和C#是什麼關系
兩者沒有關系。xaml是wpf技術的腳本語言,用來做界面的。C#屬於高級編程語言,和Java類似,可以用來開發各種應用程序。但是xaml和C#一般都用Visual Stuido編譯器,因為同屬於微軟技術。
❷ XAML 文件的創建
雖然XAML可以創建一個類庫和模塊供其它的程序使用(有點類似於用C#或者VB.NET等語言創建一個DLL程序集,供其它的程序使用)
但是我們還是經常直接使用XAML來構建用戶界面。
一般來說,XAML應用程序有兩種類型,分別為eXPRess和installed。
Express應用程序通常宿主於一個Web瀏覽器中,也就是說在瀏覽器中以Web頁面類似的形式進行呈現的。
而Installed應用程序就和傳統的桌面程序非常類似,包括控制台程序和窗體程序兩種形式。
由於我們在這里是以手動的方式創建一個WPF程序,所以我們無法直接使用WinFX Extensions to Visual Studio 2005提供的模板創建特定類型的XAML程序。
為此,我們要通過手動的方式創建一個特定類型的XAML應用程序,我們還要創建對應的項目文件,並在該項目文件中指定要創建的應用程序類型。
MSBuild是Vista和Visual Studio 2005中一項新的特性,伴隨著Visual Studio 2005的發布,就標志著微軟已經遷移到新一代的統一生成平台。
現在所有的項目都可以很輕松地通過MSBuild生成.NET程序集。更加激動人心和有益的是,在編譯和生成一個應用程序時,並不需要Visual Studio 2005作為必需的支持,我們完全可以採用MSBuild生成應用程序。
假如你安裝了Windows SDK的話,MSBuild也會發布到你的計算機中。
提示:假如使用Visual Studio 2005創建一個XAML應用程序的話,那麼你完全不用理會MSBuild生成應用程序的具體細節。Visual Studio 2005將會自動地為該XAML程序創建一個項目文件, 而後MSBuild將按照這個項目文件指定的方式進行工作。
提示:可以通過"開始"-"所有程序"-"Microsoft Windows SDK"-"CMD"打開MSBuild控制台窗口。你可以在命令提示符中輸入"msbuild /help"查看所有與MSBuild相關的命令。
MSBuild會讀取一個基於xml的、擴展名為.csproj或vbcsproj的項目文件,並按照該項目文件指定的方式,生成相應的可執行程序。在項目文件中包含一系列的XML元素,我們在這里只介紹一些重要的XML元素和它們的對應設置。各個XML元素的描述如下:
Project 所有的項目文件都必需的根元素
PropertyGroup 包含一些項目屬性的設置,例如我們在生成一個項目時是採用Debug方式還是Release方式。
ItemGroup 包含一系列的項目,用來指定組成該項目的代碼文件或資源文件。
Import 答應你導入其它的一些項目文件,例如將一些目標文件導入到某項目文件中
我們可以有很多方式為MSBuild配置對應的項目文件,當然最便捷的方法就是直接使用Visual Studio 2005,它會自動地生成相應的項目文件。下面是一個最簡單的項目文件示例,其代碼如下:
01 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
02 <PropertyGroup>
03 <AssemblyName>MyFirstapplication</AssemblyName>
04 <TargetType>winexe</TargetType>
05 <Configuration>Release</Configuration>
06 <OutputPath>.\</OutputPath>
07 </PropertyGroup>
08 <ItemGroup>
09 <Reference Include="System" />
10 <Reference Include="WindowsBase" />
11 <Reference Include="PresentationCore" />
12 <Reference Include="PresentationFramework" />
13 </ItemGroup>
14 <ItemGroup>
15 <ApplicationDefinition Include="MyApp.xaml" />
16 <Page Include="Page1.xaml" />
17 </ItemGroup>
18 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
19 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
20 </Project>
上述的項目文件中,我們在第1行使用了Project元素了,並為其xmlns屬性指定了命名空間。注重這個屬性是必需的,而且其屬性值必須為http://schemas.microsoft.com/developer/msbuild/2003。
我們在前面提及過,PropertyGroup中包含一些項目屬性的設置,例如在第3行代碼中,我們使用AssemblyName元素來設置MSBuild產生最終的可執行程序名,第4行代碼使用TargetType元素指定生成的程序類型,我們可以在<TargetType>…</TargetType>之間設置4種不同的值,在本例中為"winexe",表明生成的目標程序類型是一個圖形化程序(不是控制台程序,可以為窗體形式,也可以為瀏覽器形式)。假如將其值設置為"exe",則生成的是一個控制台程序。
"Library"是一個DLL程序集,"Netmole"生成的則是一個程序集中的模塊。第5行代碼中的Configuration元素是一個可選項,假如想使用debug生成方式的話,可以將其設置為"debug",默認的生成方式為"Release"。
第6行代碼中的OutputPath元素用來指定生成文件存放的文件夾,而本例中的".\"表示生成的文件將直接生成在根目錄下。
第9到13行的<ItemGroup>…</ItemGroup>中包含4個Reference元素,在這里我們可以使用"Include"屬性來語言一個動態鏈接庫文件,而"System"、"WindowsBase"等就是這些DLL文件的名稱,這些動態鏈接庫文件中包含了WPF中所有的核心類。
第14到17行的<ItemGroup>…</ItemGroup>中,我們使用ApplicationDefinition元素的"Include"屬性指定該XAML程序的應用程序定義文件為"MyApp.xaml"。
使用Page元素的"Include"屬性指定該XAML程序中使用到的XAML頁面文件(假如該XAML頁面還包含代碼後置文件的話,那麼還必須使用Compile屬性指定對應的代碼後置文件)。
最後要注重的就是第18、19代碼所使用的Import元素,該元素答應你包含其它的項目文件,其中該元素的Project屬性是必選的,用來指定所要包含的項目文件。
一般情況下,我們通常使用Import元素來導入標準的目標文件,其中一個是Microsoft.WinFX.targets,另外一個則是和適當的語言相關的目標文件-Microsoft.CSharp.targets或Microsoft.VisualBasic.targets。大多數的WPF程序在生成時都需要上述兩個文件中定義的目標。
對一個C#的項目來說,標準的Import語句如下:
01 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
02 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
而對一個VB.NET項目來說,標準的Import語句如下:
01 <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
02 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" /> QQRead.com 推出數據恢復指南教程 數據恢復指南教程 數據恢復故障解析 常用數據恢復方案 硬碟數據恢復教程 數據保護方法 數據恢復軟體 專業數據恢復服務指南
❸ 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。
❹ C# xaml作用是什麼呀剛接觸不太懂
XAML是eXtensible Application Markup Language的英文縮寫,相應的中文名稱為可擴展應用程序標記語言,它是微軟公司為構建應用程序用戶界面而創建的一種新的描述性語言。XAML提供了一種便於擴展和定位的語法來定義和程序邏輯分離的用戶界面,而這種實現方式和ASP.NET中的"代碼後置"模型非常類似。XAML是一種解析性的語言,盡管它也可以被編譯。它的優點是簡化編程式上的用戶創建過程,應用時要添加代碼等。
❺ XAML是否有調試模式條件編譯指令
你好,
與if類似的條件編譯指令為#if和#ifdef。 條件編譯指令屬於預編譯語句,即編譯器在執行編譯工作時
❻ XAML與C#與WPF三者到底有什麼關系
XAML是.NET體系開發程序或者網頁時前台編程的一種布局方式或者說開發語言,可以比較自由的用標簽的方式進行布局,借鑒了HTML和XML等語言的風格,並且加入了一些動畫等的實現。
C#則是後台邏輯開發用的編程語言,這個應該不用多說。
WPF則是微軟准備代替C#.NET中Forms編程方式的一種全新編程方式,其方式就是前台採用XAML控制布局,後台可以用C#,VB,C++等來相應,相當於前面用XAML寫了個控制項,而其控制邏輯指引到後台的函數邏輯中,而C#就是編寫邏輯的支持語言之一。
這么說應該能理解了吧~
❼ 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的最新版本就是了,這樣一定沒問題
❽ XAML算不算腳本語言
XAML是一種解析性的語言,盡管它也可以被編譯。微軟推薦XAML被編譯成BAML(Binary
Application
Markup
Language-二進制語言程序標記語言)。
❾ 反編譯工具能看到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
❿ 如何在代碼中操作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 屬性來確定的。
在目前已介紹的示例中,您已看到幾個按鈕,但還沒有一個按鈕具有任何關聯的邏輯行為。為對象元素添加行為的主要應用程序級機制是使用元素類的現有事件,並為在運行時引發該事件時調用的該事件編寫特定的處理程序。事件名稱以及要使用的處理程序的名稱在標記中指定,而實現處理程序的代碼在代碼隱藏中定義。