Windows Phone 7 開發 31 日談——第5日:系統主題
By Jeff Blankenburg
本文是“Windows Phone 7 開發 31 日談” 系列的第5日。
昨天,我講解了裝置方向,以及在使用者改變他們的裝置方向時如何適應這些改變。今天,我們來看看在他們更改了電話的主題和顏色後我們該做些什麼。
深色與淺色主題
如果你還沒看到,可以將你電話的主題由深改為淺,並設定一個強調色。來看一下相同的應用程式使用了兩個不同主題:
強調色
你的使用者可以設定一個系統級的強調色。作業系統提供了10種大方明快的顏色供選擇。這些顏色不僅會在電話的起始螢幕中得到充分利用,還可以供你的應用程式來使用。來看一下這些顏色:
考慮預設值
當建立應用程式時,經常會去改變某些東西的顏色。我很支援這種做法。這隨你。不過你改的越多,你就越想將所有內容 都改掉。我不建議你在白色背景下使用深色文字(或者相反)。我是說如果你想有意讓某些東西變為白色,你要仔細考慮如果電話的主題變為白色時它將會變為什麼樣子(可能會看不到哦)。幸好,有一種簡單的方法可以處理它,叫做Expression Blend 4。
Expression Blend 4 中的裝置標籤
首先,在Expression Blend中開啟專案。最簡單的方法是在Visual Studio中右擊此專案,選擇“Open In Expression Blend…”
開啟後,在Blend的UI中有一個標籤叫“Device”,看起來像這樣:
這個標籤允許你預覽右側設計層中不同的主題和強調色。這我們開始在程式中使用這些顏色時非常重要。例如,我想在我的程式中使用一個帶顏色的背景,顏色讓使用者指定。為了做到這一點,我用了Expression Blend 4的另一個出色的特性:顏色資源標籤。
顏色資源
在你對這批文章寫“為什麼我非得用Expression Blend的呢?我是開發人員!”這樣的評論之前讓我告訴你:所有的這一切都可以用Visual Studio 2010完成。 但那非常非常困難。在採用複雜方法並不會帶來更多裨益時我更傾向於用簡單方法實現。
在你沒有覆蓋它們時Windows Phone 7會使用一套預設顏色集,在很多情況下,認識這些顏色對你很有益。在下面的圖片中,可以看到PhoneAccentColor和PhoneBackgroundColor根據我在裝置標籤中選擇的主題和強調色進行改變。第一個是深/藍,第二個是淺/橙。
在程式中選擇這些顏色後,它允許我們繫結到特定的系統值,當使用者改變主意時,程式可以迅速的反映出改變。在下面的程式碼中,你會看到我在程式中新增了一個使用了漸進色的矩形,從PhoneBackgroundColor過渡到PhoneAccentColor。我還設定了應用程式的標題,同樣利用了電話的強調色。
- <Grid x:Name="LayoutRoot" Background="Transparent">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <!--TitlePanel contains the name of the application and page title-->
- <Rectangle Stroke="Black" Grid.RowSpan="2">
- <Rectangle.Fill>
- <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
- <GradientStop Color="{StaticResource PhoneBackgroundColor}" Offset="0"/>
- <GradientStop Color="{StaticResource PhoneAccentColor}" Offset="1"/>
- </LinearGradientBrush>
- </Rectangle.Fill>
- </Rectangle>
- <!--TitlePanel contains the name of the application and page title-->
- <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
- <TextBlock x:Name="ApplicationTitle" Text="BLANKENSOFT" Style="{StaticResource PhoneTextNormalStyle}" mce_Style="{StaticResource PhoneTextNormalStyle}"/>
- <TextBlock x:Name="PageTitle" Text="system theming" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" mce_Style="{StaticResource PhoneTextTitle1Style}">
- <TextBlock.Foreground>
- <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
- </TextBlock.Foreground>
- </TextBlock>
- </StackPanel>
- <!--ContentPanel - place additional content here-->
- <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
- <TextBlock Height="601" TextWrapping="Wrap" HorizontalAlignment="Left" Margin="0,6,0,0" x:Name="textBlock1" Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur mollis turpis sit amet diam elementum molestie. Cras quis massa ante. Morbi sit amet arcu quam, non dignissim nibh. Nunc lectus leo, ornare quis imperdiet id, fringilla vel diam. Proin vitae augue non sem sollicitudin imperdiet ut quis diam. Nulla vitae nulla eros. Curabitur mauris justo, eleifend eu sodales ac, blandit vitae mauris. Pellentesque erat lorem, euismod at sodales eget, sollicitudin sed velit. Praesent est sapien, hendrerit tempor tincidunt quis, posuere ac nunc. Nam odio nisl, feugiat eget blandit sit amet, dapibus id tellus. Sed blandit nisi nunc. Aliquam fermentum justo tristique risus porta sollicitudin. Aenean aliquam congue ornare. Curabitur blandit mi quis odio convallis adipiscing." VerticalAlignment="Top" Width="468" />
- </Grid>
- </Grid>
這是上面兩個程式的介面(這兩個截圖除了主題和顏色之外沒有任何區別):
示例程式碼下載
下載這個示例,用Expression Blend開啟它。用顏色資源調整。通過裝置標籤預覽變化。這一定會使你的生活更輕鬆。
原文地址: http://www.jeffblankenburg.com/post/31-Days-of-Silverlight-7c-Day-5-System-Theming.aspx
相關文章
- Windows Phone 7 開發 31 日談——第7日:啟動器Windows
- Windows Phone 7 開發 31 日談——第25日:外部APIWindowsAPI
- Windows Phone 7 開發 31 日談——第24日:嵌入字型Windows
- Windows Phone 7 開發 31 日談——第19日:推送通知Windows
- Windows Phone 7 開發 31 日談——第3日:返回鍵Windows
- Windows Phone 7 開發 31 日談——第21日:Silverlight Toolkit for Windows PhoneWindows
- Windows Phone 7 開發 31 日談——第16日:全景檢視Windows
- Windows Phone 7 開發 31 日談——第13日:位置服務Windows
- Windows Phone 7 開發 31 日談——第8日:選擇器Windows
- Windows Phone 7 開發 31 日談——第4日:裝置方向Windows
- Windows Phone 7 開發 31 日談——第1日:專案模板Windows
- Windows Phone 7 開發 31 日談——第18日:WebBrowser控制元件WindowsWeb控制元件
- Windows Phone 7 開發 31 日談——第15日:獨立儲存Windows
- Windows Phone 7 開發 31 日談——第11日:加速感應器Windows
- Windows Phone 7 開發 31 日談——第2日:頁面導航Windows
- Windows Phone 7 開發 31 日談——第22日:應用?還是 遊戲?Windows遊戲
- Windows Phone 7 開發 31 日談——第20日:地圖控制元件Windows地圖控制元件
- Windows Phone 7 開發 31 日談——第17日:樞軸控制元件Windows控制元件
- Windows Phone 7 開發 31 日談——第14日:墓碑機制(多工)Windows
- Windows Phone 7 開發 31 日談——第12日:使手機震動Windows
- Windows Phone 7 開發 31 日談——第23日:提供試用版應用程式Windows
- Windows Phone 7 開發 31 日談——第26日:與其他開發人員(免費)分享你的程式Windows
- 一起學Windows Phone7開發(十四.一 Phone Task)Windows
- Windows Phone7開發系列視訊地址Windows
- ·Windows Phone 7首款機型8月25日開賣Windows
- 使用XNA為Windows phone 7開發簡單拼圖遊戲Windows遊戲
- Windows Phone 8開發連結Windows
- windows phone資料庫開發Windows資料庫
- Windows Phone 8 開發筆記Windows筆記
- 開發WP7專案的好工具: Windows Phone CommandsWindows
- 《Windows Phone 7入門經典之使用Silverlight和XNA開發Windows Phone應用》書評Windows
- Windows Phone 7 墓碑機制Windows
- Windows Phone 7程式設計Windows程式設計
- Windows Phone 離主流系統還很遠Windows
- 淺談Windows Phone 7本地資料庫的選擇Windows資料庫
- HTML Agility Pack for Windows Phone 7 (WP7)HTMLWindows
- ModStartCMS萬能建站系統主題開發教程
- Windows Phone 7解析圖片格式Windows