Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin forms:返回Xamarin.forms.Color的函数的奇怪行为_Xamarin.forms - Fatal编程技术网

Xamarin forms:返回Xamarin.forms.Color的函数的奇怪行为

Xamarin forms:返回Xamarin.forms.Color的函数的奇怪行为,xamarin.forms,Xamarin.forms,我对返回颜色的函数(Xamarin.Forms)有一个奇怪的问题。我的想法是根据任命状态显示不同背景的方框。我为这样的枚举创建了一个扩展 公共静态颜色FORSTATUS(此任命状态) { 颜色rtn=颜色。透明; 开关(状态) { 案例任命状态。活动: rtn=颜色。从十六进制(“#654BE”); 打破 案例任命状态。已取消: rtn=颜色。从十六进制(#E14063”); 打破 案例任命状态。已完成: rtn=颜色。从十六进制(“#C4E7EE”); 打破 案例任命状态。保留: rtn=颜色

我对返回颜色的函数(Xamarin.Forms)有一个奇怪的问题。我的想法是根据
任命状态显示不同背景的方框。我为这样的枚举创建了一个扩展

公共静态颜色FORSTATUS(此任命状态)
{
颜色rtn=颜色。透明;
开关(状态)
{
案例任命状态。活动:
rtn=颜色。从十六进制(“#654BE”);
打破
案例任命状态。已取消:
rtn=颜色。从十六进制(#E14063”);
打破
案例任命状态。已完成:
rtn=颜色。从十六进制(“#C4E7EE”);
打破
案例任命状态。保留:
rtn=颜色。从十六进制(“#84CEDD”);
打破
案例任命状态。进展:
rtn=颜色。从十六进制(“#B1D1DE”);
打破
案例任命状态。已暂停:
rtn=颜色。从十六进制(“#F1E19E”);
打破
违约:
rtn=颜色。透明;
打破
}
返回rtn;
}
如果我调用此函数,则
rtn
具有我期望的颜色,但在屏幕上我看不到任何颜色。为了修复它,我用类似的代码创建了一个函数

公共静态类配色助手
{
/// 
///确定约会状态的颜色
/// 
///状态。
///颜色。
公共静态颜色FORSTATUS(此任命状态)
{
颜色rtn=颜色。透明;
开关(状态)
{
案例任命状态。活动:
rtn=颜色。从十六进制(“#654BE”);
打破
案例任命状态。已取消:
rtn=颜色。从十六进制(#E14063”);
打破
案例任命状态。已完成:
rtn=颜色。从十六进制(“#C4E7EE”);
打破
案例任命状态。保留:
rtn=颜色。从十六进制(“#84CEDD”);
打破
案例任命状态。进展:
rtn=颜色。从十六进制(“#B1D1DE”);
打破
案例任命状态。已暂停:
rtn=颜色。从十六进制(“#F1E19E”);
打破
违约:
rtn=颜色。透明;
打破
}
返回rtn;
}
}
在这种情况下,结果也是一样的。如果我在Visual Studio中检查该值,则该值似乎正确,但函数是
未知标识符
。请看图片

如果我主要使用相同的开关,我可以看到屏幕上的颜色,如下图所示

我在ViewModel中调用此函数

public override async void LoadData(string search=”“)
{
AppointmentList=新的ObservableCollection


提前谢谢。

我认为向每种颜色添加alpha通道值应该可以解决问题,例如:


was
ʎbe
,should is
#FF654BE

我认为向每种颜色添加alpha通道值可以解决问题,例如:


was
ʎbe
,should is
#FF654BE

问题出在这一行

rtn=Color.FromHex(“#654BE”);
您正在将一个5字符长(不带“#”)传递给
FromHex
,这不是必需的格式。然后结果将被取消定义

Color.FromHex()
factory方法需要以下格式之一:

  • rgb
  • rrggbb
  • argb
  • aarrggbb
带有可选的前导字符
#


在您的情况下,输入字符串
654BE
被转换为uint值
414910
,然后将其拆分为带有以下
int
值的RGBA值(分别为):6、84、190、0。Alpha通道为0是颜色不显示的原因。

问题在这一行

rtn=Color.FromHex(“#654BE”);
您正在将一个5字符长(不带“#”)传递给
FromHex
,这不是必需的格式。然后结果将被取消定义

Color.FromHex()
factory方法需要以下格式之一:

  • rgb
  • rrggbb
  • argb
  • aarrggbb
带有可选的前导字符
#


在您的情况下,输入字符串
654BE
被转换为uint值
414910
,然后用以下
int
值(分别)拆分为RGBA值:6、84、190、0。Alpha通道为0是您的颜色不显示的原因。

您可以发布整个主函数的代码以及如何调用它吗?主函数非常复杂。我在那里有一个ViewModel。我将在我调用它的地方发布一段代码。添加
Debug.WriteLine($“color{colorHelpers.ColorForStatus(app.Status)}”)
并查看它打印的内容。我认为它返回
透明
A=0
,如果
A
是Alpha通道,那么您将获得透明的颜色尝试更改
“#654BE”
#FF654BE
你能发布整个主函数的代码吗?主函数非常复杂。我有一个ViewModel。我将在我调用它的地方发布代码。添加
调试.WriteLine($“Color{colorHelpers.ColorForStatus(app.Status)}”)
并查看它打印的内容。我认为它返回
透明
A=0
,如果
A
是Alpha通道,那么您将获得透明的颜色尝试更改
“654BE”
#FF654BE
颜色。FromHex()
如果未指定,则将不透明度设置为
ff
。@StephaneDelcroix为什么
A=0
,您知道吗?
Color.FromHex()
将不透明度设置为