如何在Xamarin.Forms的C#代码中用Double参数设置BoxView颜色?
在Xamarin.Forms的C#代码中使用Double参数创建Color对象
没问题,这其实是因为Color类的FromRgb方法有多个重载版本,你之前用的是接受**0-255整数(byte类型)的重载,而XAML里你尝试的是接受0.0-1.0浮点数(double类型)**的重载。在C#里我们只需要明确调用这个double参数的重载就行。
正确的C#实现代码
把你原来的Color赋值部分替换成下面的写法,就能和XAML里的Double参数版本完全对应:
this.Content = new ScrollView { Content = new StackLayout { Children = { new BoxView{ // 使用double类型的FromRgb重载,参数范围0.0到1.0 Color = Color.FromRgb(1.0, 0.0, 0.0), HeightRequest = 100, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.CenterAndExpand, WidthRequest = 100 } } } };
关键说明
- XAML里通过指定
<x:Double>类型,会自动匹配Color.FromRgb(double, double, double)这个重载; - 在C#中,如果你直接写
Color.FromRgb(1, 0, 0),编译器会默认匹配接受byte类型的重载(因为1是整数,会被隐式转换为byte),这和你想要的浮点版本不是同一个方法; - 只要给参数加上小数部分(比如
1.0),或者明确标记为double(比如1d),编译器就会正确调用double参数的重载,和XAML的效果完全一致。
内容的提问来源于stack exchange,提问作者TheGame1083
相关产品推荐
相关产品推荐

