在页面之间传递颜色

时间:2013-11-05 12:10:18

标签: c# windows-phone-7 windows-phone-8 windows-phone windows-phone-7.1

我想将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'

你知道如何在第二页上获得价值吗?

4 个答案:

答案 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
因此,您有两种选择

  1. 使用Color.FromArgb方法并从中传递int转换 您刚刚收到的substrings string
  2. 使用IsolatedStorageSettings并将其添加到此页面上并使用 它在下一页。
    喜欢Foreground = (Color)isoSettings["passedColor"];

答案 3 :(得分:0)

如果没有任何效果,请尝试此方法。

在导航到其他页面之前,

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

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

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

当然,检查null和all。