【Windows 10 應用開發】跟隨系統佈景主題色彩

來源:互聯網
上載者:User

標籤:uicolor   ack   file   lock   顏色   事件   etc   ima   系統   

有些時候,希望應用程式中的某些顏色可以與系統的佈景主題色彩相同,並且當系統主題色改變時進行同步。

實現過程並不複雜,主要用到 UISettings 類,它公開一個 GetColorValue 方法,訪問這個方法,可以得到指定的顏色值(用Color結構表示)。而表示要擷取顏色的類型由一個叫 UIColorType 的枚舉來約定。如下面超高清所示。

可能有朋友在調用 GetColorValue 方法時會使用值 Background,其實這個值不是系統主題色,是視窗的背景色,預設情況返回的都是白色。系統主題色是值 Accent (即所謂的強調色)。

另外大夥會看到好N個以 Accent 開頭的值,如 AccentDark1、AccentLight2等。這些值的意思就是,在 Accent 值的基礎上加深或者淺化。比如,Accent 值返回藍色,那麼,AccentLight1 表示相對於 Accent 值稍淺一點的藍色;AccentLight2 再淺一點;AccentLight3 再再淺一點。至於說淺多少,深多少,這個你自己研究研究吧。

下面給大夥看看實測效果,為了雅觀,先弄個UI。

        <Grid HorizontalAlignment="Center" VerticalAlignment="Center">            <Grid.RowDefinitions>                <RowDefinition Height="auto"/>                <RowDefinition Height="auto"/>            </Grid.RowDefinitions>            <Rectangle Name="rect" Width="300" Height="250" Margin="15" Stroke="Red" StrokeThickness="3"/>            <TextBlock Margin="12" Grid.Row="1" Text="注意看上面的矩形。" FontSize="16"/>        </Grid>

這段 XAML 不複雜,要是看不懂的話,可以去諮詢濟公。主要的元素是那個矩形,待會咱們讓它的填充顏色跟隨系統的主題色。

那麼,有大夥伴會問了,當系統主題色更改後,我的應用程式怎麼得到通知呢?別緊張,君不見,UISettings 類有個 ColorValuesChanged 事件嗎,這就對了,如果系統主題色改變,就會引發這個事件。所以,聰明的你一定知道後面的思路了,對,就是響應這個事件,給填充矩形的畫刷改變顏色即可。

不過,有一點你得嚴重注意,這個事件是在另一個線程上調用的,所以,你要訪問 UI 元素的話,不要忘了帶上 Dispatcher。

比如這樣。

     uisetting = new UISettings();     uisetting.ColorValuesChanged += OnColorValuesChanged;        private async void OnColorValuesChanged(UISettings sender, object args)        {            Color bg, fg;            bg = sender.GetColorValue(UIColorType.Accent);            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,                () =>                {                    SolidColorBrush brush = rect.Fill as SolidColorBrush;                    if (brush == null)                    {                        brush = new SolidColorBrush();                    }                    brush.Color = bg;                });        }

 

代碼很 Easy,但效果很性感。不信你試試。

 

是不是很性感呢?

 

程式碼

 

【Windows 10 應用開發】跟隨系統佈景主題色彩

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.