新建模板
打開Visual Studio 11,新建項目 -> 展開Visual C# -> 點擊Windows Metro Style,我們可以看到微軟在C#開發Windows Metro應用程序中提供了三種項目模板。
在Blend中我們同樣也可以看到:
這三種模板分別可以為我們快速創建不同風格的應用程序。
拆分應用程序(Split Application):在已分組的項之間導航的Windows Metro風格應用程序的兩頁項目。第一頁允許組選擇,而第二頁顯示項列表以及選定項的詳細信息。
空白應用程序(Blank Application):未預定義控件或布局的Windows Metro風格應用程序的單頁項目。
網格應用程序(Grid Application):在多個項組之間導航的Windows Metro風格應用程序的多頁項目。專用頁顯示組合項的詳細信息。
實際上三種模板的項目結構大致一樣,只是預定義了一些控件和布局,所以即使我創建了空白應用程序,在下面我也可以右擊解決方案 -> 添加 –> 新建項 來自己搭建其他樣式模板。
好了,這里就不多說了,下面以空白應用程序模板為例,進一步了解。
項目結構
選擇項目模板后,Visual Studio會自動生成預定義的項目結構。
從上面圖中可以看到,項目由Assets文件夾、Common 文件夾、App.xaml頁、BlankPage.xaml、BlankApplication_TemporaryKey.pfx和Package.appxmanifest組成。
如果你有Silverlight或者WPF項目經驗,你會發現相比Silverlight/WPF項目,項目中多了一個Common文件夾,包含一些類和資源,一個BlankApplication_TemporaryKey.pfx文件和Package.appxmanifest文件。
Ø BlankApplication_TemporaryKey.pfx ----- 微軟代碼簽名證書
Ø Package.appxmanifest------ 包含描述你的應用的元數據,包括顯示名稱、說明、徽標和功能。
Metro 風格應用在安全容器中運行,對文件系統、網絡資源和硬件具有有限的訪問權限。 無論用戶何時從 Windows 應用商店安裝應用,Windows 都會查看文件中的元數據Package.appxmanifest以確定應用需要執行哪些功能。例如,某個應用可能需要訪問 Internet 中的數據、用戶文檔庫中的文檔,或用戶的攝像頭和麥克風。當應用安裝完成后,它會向用戶顯示所需的功能,而用戶必須授予相應的權限才能讓它訪問這些資源。如果應用沒有請求並接收所需要的某個資源的訪問權限,則當用戶運行它時,系統將禁止其訪問該資源。
Ø Common文件夾------ 包含了一些類和資源,給項目和模板項添加依賴。
下面看看文件清單:
文件名 |
描述 |
StandardStyles.xaml |
預定義了樣式和模板供項目和模板項實用。 |
Readme.txt |
信息描述 |
BindableBase.cs |
這是一個基類,提供了INotifyPropertyChanged的實現。 |
BooleanNegationConverter.cs |
在XAML中使用的轉換器。轉換一個布爾值。 |
BooleanToVisibilityConverter.cs |
在XAML中使用的轉換器。轉換到可見狀態的布爾值。 |
LayoutAwarePage .cs |
具有能夠適應不同布局和視圖的頁面功能的基類。主要是用來監聽視圖狀態更改事件和頁面Visual State切換的響應。你可以重寫此行為,提供的自定義Visual State名稱仍然使用在這個文件中提供的事件代碼。例如:用戶有時需要顯示不同的UI時(如用戶登錄與注銷),你可以使用兩個不同的Visual State名稱對應不同的UI,但仍然使用在這個文件中提供的相同事件代碼。 |
RichTextColumns.cs |
為網格應用程序定義了Grid文本樣式及布局。 |
{
}
public class LayoutAwarePage : Page
{
}
public sealed class BooleanNegationConverter : IValueConverter
{
}
public sealed class BooleanToVisibilityConverter : IValueConverter
{
}
public sealed class RichTextColumns : Panel
{
}
所以,如果你希望快速開發或沒有現有框架的話,可以直接使用Windows Metro為你創建的項目模板,當然如果你希望重寫架構的話,也可以將項目中自動生成的類與資源刪除,自己重寫實現以上功能。