C# 如何在 Windows Phone 8 WinRT 中更改根布局的背景颜色
C# How to change background color of root layout in Windows Phone 8 WinRT
我正在尝试更改 Windows Phone 8 (WinRT) 应用中主要内容区域的背景颜色。我尝试通过向网格和主列表视图添加边框来指定颜色(灰色)。问题是当我在页面之间导航时,我可以看到背景颜色从黑色变为灰色。
这导致我尝试设置 ApplicationPageBackgroundThemeBrush 的样式失败。
从这里开始,我继续尝试在 App.xaml.cs 中设置 RootFrame 颜色。但我只能找到针对 Silverlight 应用程序执行此操作的示例。我在 app.xaml.cs 中有一部分我认为是正确的 c# 代码,但我一直试图正确地制定它以实际指定颜色的十六进制值。
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;
我正在尝试更改 Windows Phone 8 (WinRT) 应用中主要内容区域的背景颜色。我尝试通过向网格和主列表视图添加边框来指定颜色(灰色)。问题是当我在页面之间导航时,我可以看到背景颜色从黑色变为灰色。
这导致我尝试设置 ApplicationPageBackgroundThemeBrush 的样式失败。
从这里开始,我继续尝试在 App.xaml.cs 中设置 RootFrame 颜色。但我只能找到针对 Silverlight 应用程序执行此操作的示例。我在 app.xaml.cs 中有一部分我认为是正确的 c# 代码,但我一直试图正确地制定它以实际指定颜色的十六进制值。
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;