0

我想将颜色从 ColorPicker (Code4fun controll) 传递到另一个页面。

我这样传递参数:

 NavigationService.Navigate(new Uri("/GeneratePage.xaml?&foreground=" + qrCodeColorPicker.Color, UriKind.Relative)); 

而且我在生成器页面上获取价值有问题。

var colorCode = NavigationContext.QueryString["foreground"];
Foreground = colorCode;

错误:

错误 1 ​​无法将类型“字符串”隐式转换为“System.Windows.Media.Color”

你知道我怎样才能在第二页上获得价值吗?

4

4 回答 4

0

如果没有什么对你有用,试试这个方法。

在导航到另一个页面之前,

PhoneApplicationService.Current.State["Foreground"] = qrCodeColorPicker.Color;

在下一页的 OnNavigateTo 中,取回颜色:

Color foregroundColor = (Color)PhoneApplicationService.Current.State["Forground"];

当然,检查 null 和 all。

于 2014-03-25T20:24:25.340 回答
0

查询返回 a string,您不能只登录到 a color variable
所以,你有两个选择

  1. 使用Color.FromArgb方法并将 刚收到substrings的int 转换传递给它。string
  2. 在此页面上使用IsolatedStorageSettings并添加它,并在下一页使用它。
    喜欢Foreground = (Color)isoSettings["passedColor"];
于 2013-11-11T12:38:04.943 回答
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"]);
于 2013-11-05T12:28:28.893 回答
0

只是一个猜测,

var colorCode = "#FFDFD991";

Foreground = (Color)ColorConverter.ConvertFromString(colorCode);

于 2013-11-05T12:12:58.823 回答