1. 程式人生 > >UWP中String類型如何轉換為Windows.UI.Color

UWP中String類型如何轉換為Windows.UI.Color

否則 .get 完美解決 ack black pro get 求助 inf

原文:UWP中String類型如何轉換為Windows.UI.Color

我在學習過程中遇到的,我保存主題色為string,但在我想讓StatusBar隨著主題色變化時發現沒法使用。

1 ThemeColorHelper tc = new ThemeColorHelper();              
2 StatusBar statusbar = StatusBar.GetForCurrentView();
3 statusbar.BackgroundColor = (Color)tc.ThemeColor;
4 statusbar.BackgroundOpacity = 1;
5 statusbar.ForegroundColor = Colors.Black;

這樣一運行就會報錯,

技術分享圖片

苦惱了很久都沒有解決,最後求助大神說通過創建Dictionary來解決。

 1  if (ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
 2             {
 3                 Dictionary<string, Color> color = new Dictionary<string, Color>()
 4
{ 5 ["SkyBlue"] = Colors.SkyBlue, 6 ["Pink"] = Colors.Pink, 7 ["LightGreen"] = Colors.LightGreen 8 }; 9 ThemeColorHelper tc = new ThemeColorHelper(); 10 StatusBar statusbar = StatusBar.GetForCurrentView();
11 statusbar.BackgroundColor = color[tc.ThemeColor.ToString()]; 12 statusbar.BackgroundOpacity = 1; 13 statusbar.ForegroundColor = Colors.Black; 14 }

這樣有點麻煩,所以大神有說了另一種方法。

 if(ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
            {
                ThemeColorHelper tc = new ThemeColorHelper();
                Color color = (Color)typeof(Colors).GetProperty(tc.ThemeColor.ToString()).GetValue(this);         
                StatusBar statusbar = StatusBar.GetForCurrentView();
                statusbar.BackgroundColor = color;
                statusbar.BackgroundOpacity = 1;
                statusbar.ForegroundColor = Colors.Black;
            }

完美解決。但需要註意這個需要引用 using System.Reflection;並且必須使用colors裏面有的顏色。否則會報錯。

UWP中String類型如何轉換為Windows.UI.Color