簡體   English   中英

C#檢測重音顏色更改WinRT XAML

[英]C# Detect Accent Colour Changes WinRT XAML

我正在嘗試檢測Application.Resources資源字典中的更改,因此我可以在更新時自動將Titlebar更改為Accent Color。 所有XAML控件和元素都會自動更改,並且在將純色畫筆設置為DSDFS畫筆的地址時,其內部值會更改。

這是我嘗試用來檢測更改的代碼:

public static DependencyProperty accent = DependencyProperty.Register("DictChange", typeof(ResourceDictionary), typeof(Shell), new PropertyMetadata(Application.Current.Resources, new PropertyChangedCallback(accent_PropertyChanged)));

public ResourceDictionary DictChange
{
    get { return (ResourceDictionary)GetValue(accent); }
    set { SetValue(accent, value); }
}

private static void accent_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    _app.SetTitlebar();
}

我假設它錯了,或者我不確定檢測更改是否正確。 之前的迭代中,我使用Application.Current.Resources["SystemControlBackgroundAccentBrush"] as SolidColorBrush並嘗試檢測其屬性,但這也無效。

我究竟做錯了什么? 請幫忙 :)

這可能沒錯,但它可能不是最好的解決方案。

在WinRT XAML中,我們有了這個新的ThemeResource ,可以自動更新資源。 棘手的一點是找到一種方法將ApplicationView.GetForCurrentView().TitleBar.BackgroundColor綁定到SystemControlBackgroundAccentBrush

我回答這個問題 ,我創建了一個Behavior ,重視自定義 TitleBar的頁面。 如果您將Background屬性修改為這樣的 -

<local:FullScreenModeTitleBarBehavior Background="{ThemeResource SystemControlBackgroundAccentBrush}" />

現在運行應用程序 ,當您更改系統的accent color時,您將看到背景顏色更新,如下圖所示 -

在此輸入圖像描述

基本上在你的情況下,你只需要創建一個類似的(&simpler?) Behavior ,它就像一個橋梁,通過ThemeResource綁定將TitleBarBackgroundColor鏈接到SystemControlBackgroundAccentBrush

希望這可以幫助!

我假設它錯了,或者我不確定檢測更改是否正確。

您無法通過注冊DependencyProperty來檢測資源字典中的鍵值更改,因為ResourceDictionay不是ObservableCollection類 在此輸入圖像描述

沒有內置支持來檢測資源字典中的鍵值更改。

作為一種變通方法,您可以考慮創建一個內部可觀察集合來檢測更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM