我想将ColorPicker(Code4fun控件)的颜色传递给另一个页面。
我传递的参数如下:
NavigationService.Navigate(new Uri("/GeneratePage.xaml?&foreground=" + qrCodeColorPicker.Color, UriKind.Relative));
我在生成器页面上获取值时遇到问题。
var colorCode = NavigationContext.QueryString["foreground"];
Foreground = colorCode;
错误:
错误1无法将类型'string'隐式转换为'System.Windows.Media.Color'
你知道如何在第二页上获得价值吗?
答案 0 :(得分:0)
只是一个猜测,
var colorCode = "#FFDFD991";
Foreground = (Color)ColorConverter.ConvertFromString(colorCode);
答案 1 :(得分:0)
你可以制作这样的转换器......
private Color ConvertHexStringToColour(string hexString)
{
byte a = 0;
byte r = 0;
byte g = 0;
byte b = 0;
if (hexString.StartsWith("#"))
{
hexString = hexString.Substring(1, 8);
}
a = Convert.ToByte(Int32.Parse(hexString.Substring(0, 2),
System.Globalization.NumberStyles.AllowHexSpecifier));
r = Convert.ToByte(Int32.Parse(hexString.Substring(2, 2),
System.Globalization.NumberStyles.AllowHexSpecifier));
g = Convert.ToByte(Int32.Parse(hexString.Substring(4, 2),
System.Globalization.NumberStyles.AllowHexSpecifier));
b = Convert.ToByte(Int32.Parse(hexString.Substring(6, 2), System.Globalization.NumberStyles.AllowHexSpecifier));
return Color.FromArgb(a, r, g, b);
}
然后像
一样使用它var colorCode = ConvertHexStringToColour(NavigationContext.QueryString["foreground"]);
答案 2 :(得分:0)
查询返回string
,您不能只是登录color variable
。
因此,您有两种选择
Color.FromArgb
方法并从中传递int转换
您刚刚收到的substrings
string
。IsolatedStorageSettings
并将其添加到此页面上并使用
它在下一页。Foreground = (Color)isoSettings["passedColor"];
答案 3 :(得分:0)
如果没有任何效果,请尝试此方法。
在导航到其他页面之前,
PhoneApplicationService.Current.State["Foreground"] = qrCodeColorPicker.Color;
在下一页的OnNavigateTo中,返回颜色:
Color foregroundColor = (Color)PhoneApplicationService.Current.State["Forground"];
当然,检查null和all。