C# 如何在 Windows Phone 8 WinRT 中更改根布局的背景颜色
本文关键字:布局 颜色 背景 WinRT Windows Phone | 更新日期: 2024-11-05 04:38:20
我正在尝试更改Windows Phone 8(WinRT)应用程序中主要内容区域的背景颜色。我尝试通过向网格和主列表视图添加边框来指定颜色(灰色)。问题是当我在页面之间导航时,我可以看到背景颜色从黑色变为灰色。
这导致我尝试设置应用程序页面背景主题画笔的样式,但没有成功。
从这里开始,我继续尝试尝试在 App.xaml.cs 中设置 RootFrame 颜色。但我只能找到针对 Silverlight 应用程序执行此操作的示例。我在 app.xaml 中拥有我认为正确的 c# 代码的一部分.cs但我无法正确表述它以实际指定颜色的十六进制值。
rootFrame = new Frame();
rootFrame.Background = new SolidColorBrush();
任何帮助都非常感谢!
-
你可以使用这个:-
rootFrame.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0, 0));
-
或者如果你有十六进制字符串,那么你可以使用这种方法:-
public static SolidColorBrush GetColorFromHexa(string hexaColor) { return new SolidColorBrush( Color.FromArgb( 255, Convert.ToByte(hexaColor.Substring(1, 2), 16), Convert.ToByte(hexaColor.Substring(3, 2), 16), Convert.ToByte(hexaColor.Substring(5, 2), 16) ) ); }
-
或者创建一个从十六进制值到 SolidColorBrush 的转换器作为您也可以在其他地方使用的通用代码。
namespace YourNamespaceHere { using System; using Windows.UI; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; public class HexToColorConverter : IValueConverter { /// <summary> /// Converts a hexadecimal string value into a Brush. /// </summary> public object Convert(object value, Type targetType, object parameter, string language) { byte alpha; byte pos = 0; string hex = value.ToString().Replace("#", ""); if (hex.Length == 8) { alpha = System.Convert.ToByte(hex.Substring(pos, 2), 16); pos = 2; } else { alpha = System.Convert.ToByte("ff", 16); } byte red = System.Convert.ToByte(hex.Substring(pos, 2), 16); pos += 2; byte green = System.Convert.ToByte(hex.Substring(pos, 2), 16); pos += 2; byte blue = System.Convert.ToByte(hex.Substring(pos, 2), 16); return new SolidColorBrush(Color.FromArgb(alpha, red, green, blue)); } /// <summary> /// And back again. /// </summary> public object ConvertBack(object value, Type targetType, object parameter, string language) { SolidColorBrush val = value as SolidColorBrush; return "#" + val.Color.A.ToString() + val.Color.R.ToString() + val.Color.G.ToString() + val.Color.B.ToString(); } } }
这是我
的App.xaml.cs中最终对我有用的:
if (rootFrame == null)
{
// Create a Frame to act as the navigation context and navigate to the first page
rootFrame = new Frame();
SolidColorBrush color = new SolidColorBrush();
color.Color = (Windows.UI.ColorHelper.FromArgb(0xFF, 44, 50, 50));
rootFrame.Background = color;