UWP中String類型如何轉換為Windows.UI.Color
阿新 • • 發佈:2018-03-14
否則 .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