C# 如何在Xamarin.Forms Material Visual中禁用MaterialPickerRenderer更改下划线不透明度

C# 如何在Xamarin.Forms Material Visual中禁用MaterialPickerRenderer更改下划线不透明度,c#,xamarin,xamarin.forms,xamarin.ios,material-design,C#,Xamarin,Xamarin.forms,Xamarin.ios,Material Design,我创建了一个自定义渲染器来扩展Xamarin.Forms中提供的 MaterialPickerRenderer的默认行为是渲染不透明下划线(请参见下图) 在我的自定义渲染器中,我试图禁用此行为-我不希望下划线不透明。在我的iOS自定义渲染器中,我可以设置初始下划线颜色,但是,当选择器失去焦点时,颜色会更新为不透明颜色(请参见下面的gif) 目前我只关注iOS的渲染器。我想知道是否有人对如何覆盖和禁用此默认MaterialPickerRenderer行为有任何建议。下面是我的自定义渲染器代码:

我创建了一个自定义渲染器来扩展Xamarin.Forms中提供的

MaterialPickerRenderer的默认行为是渲染不透明下划线(请参见下图)

在我的自定义渲染器中,我试图禁用此行为-我不希望下划线不透明。在我的iOS自定义渲染器中,我可以设置初始下划线颜色,但是,当选择器失去焦点时,颜色会更新为不透明颜色(请参见下面的gif)

目前我只关注iOS的渲染器。我想知道是否有人对如何覆盖和禁用此默认MaterialPickerRenderer行为有任何建议。下面是我的自定义渲染器代码:

using System;
using Foundation;
using Solstice.Extensions;
using Solstice.iOS.Renderers;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Material.iOS;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(Picker), typeof(TitledMaterialPickerRenderer), new[] { typeof(CustomVisual) })]
namespace Solstice.iOS.Renderers
{
    public class TitledMaterialPickerRenderer : MaterialPickerRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                Control.Underline.Color = UIColor.Clear.FromHex(0x46433E);
            }
        }
    }

    public static class UIColorExtensions
    {
        public static UIColor FromHex(this UIColor color, int hexValue)
        {
            return UIColor.FromRGB(
                (((float)((hexValue & 0xFF0000) >> 16)) / 255.0f),
                (((float)((hexValue & 0xFF00) >> 8)) / 255.0f),
                (((float)(hexValue & 0xFF)) / 255.0f)
            );
        }
    }
}
使用系统;
使用基础;
使用至点扩展;
使用Solstice.iOS.renders;
使用UIKit;
使用Xamarin.Forms;
使用Xamarin.Forms.Material.iOS;
使用Xamarin.Forms.Platform.iOS;
[assembly:ExportRenderer(typeof(Picker)、typeof(TitledMaterialPickerRenderer)、new[]{typeof(CustomVisual)}]
命名空间Solstice.iOS.Renderers
{
公共类标题MaterialPickerRender:MaterialPickerRender
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
{
Control.Underline.Color=UIColor.Clear.FromHex(0x46433E);
}
}
}
公共静态类UIColorExtensions
{
公共静态UIColor FromHex(此UIColor颜色,int hexValue)
{
返回UIColor.FromRGB(
(((浮点)((hexValue&0xFF0000)>>16))/255.0f),
(((浮点)((hexValue&0xFF00)>>8))/255.0f),
((浮点)(十六进制值和0xFF))/255.0f)
);
}
}
}

任何建议都将不胜感激-谢谢

尝试设置
控件.下划线.图层.边框颜色

[assembly: ExportRenderer(typeof(Picker), typeof(TitledMaterialPickerRenderer), new[] { typeof(VisualMarker.MaterialVisual) })]
namespace VisualDemos.iOS
{
    public class TitledMaterialPickerRenderer : MaterialPickerRenderer
    {

        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                Control.Underline.Layer.BorderColor = UIColor.Clear.FromHex(0x46433E).CGColor;
                Control.Underline.Layer.BorderWidth = 1;
            }
        }
    }

    public static class UIColorExtensions
    {
        public static UIColor FromHex(this UIColor color, int hexValue)
        {
            return UIColor.FromRGB(
                (((float)((hexValue & 0xFF0000) >> 16)) / 255.0f),
                (((float)((hexValue & 0xFF00) >> 8)) / 255.0f),
                (((float)(hexValue & 0xFF)) / 255.0f)
            );
        }
    }
}
[程序集:导出渲染器(typeof(Picker)、typeof(TitledMaterialPickerRenderer)、new[]{typeof(VisualMarker.MaterialVisual)}]
命名空间VisualDemos.iOS
{
公共类标题MaterialPickerRender:MaterialPickerRender
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
{
Control.Underline.Layer.BorderColor=UIColor.Clear.FromHex(0x46433E).CGColor;
Control.Underline.Layer.BorderWidth=1;
}
}
}
公共静态类UIColorExtensions
{
公共静态UIColor FromHex(此UIColor颜色,int hexValue)
{
返回UIColor.FromRGB(
(((浮点)((hexValue&0xFF0000)>>16))/255.0f),
(((浮点)((hexValue&0xFF00)>>8))/255.0f),
((浮点)(十六进制值和0xFF))/255.0f)
);
}
}
}