Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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
C# 如何在xamarin窗体中更改选择器底线颜色_C#_Xaml_Xamarin - Fatal编程技术网

C# 如何在xamarin窗体中更改选择器底线颜色

C# 如何在xamarin窗体中更改选择器底线颜色,c#,xaml,xamarin,C#,Xaml,Xamarin,我需要更改选择器的底线颜色和选择器中显示的项目列表的背景颜色。我可以设置选择器的背景颜色。但是选择器中项目的背景颜色默认为白色。是否有任何自定义渲染器或任何其他解决方案?我将项目添加到选择器中,如下所示 血型列表以白色显示。我需要更改该颜色。如何设置项目列表背景颜色 public List<string> _bloodGroups = new List<string>() { "A+ve", "A-ve", "B+ve", "B-Ve", "O+ve", "O-ve",

我需要更改选择器的底线颜色和选择器中显示的项目列表的背景颜色。我可以设置选择器的背景颜色。但是选择器中项目的背景颜色默认为白色。是否有任何自定义渲染器或任何其他解决方案?我将项目添加到选择器中,如下所示

血型列表以白色显示。我需要更改该颜色。如何设置项目列表背景颜色

public List<string> _bloodGroups = new List<string>() { "A+ve", "A-ve", "B+ve", "B-Ve", "O+ve", "O-ve", "AB+ve", "AB_ve" };

public void GetDistrictAsync()
{            
    foreach (string districts in _districts)
    {
        Picker_District.Items.Add(districts);
    }
}
public List\u bloodGroups=new List(){“A+ve”、“A-ve”、“B+ve”、“B-ve”、“O+ve”、“O-ve”、“AB+ve”、“AB\ve”};
public void getDistrictionAsync()
{            
foreach(在_区中的字符串区)
{
Picker_地区。项目。添加(地区);
}
}
在XAML页面中,代码如下

<StackLayout Orientation="Horizontal" 
    HorizontalOptions="FillAndExpand" 
    VerticalOptions="FillAndExpand" 
    HeightRequest="10"
    Margin="20,10,20,0"  
    BackgroundColor="#91BC47">
    <Picker 
        x:Name="Picker_BloodGroup" 
        HorizontalOptions="FillAndExpand"  
        TextColor="White" 
        BackgroundColor="#91BC47">
        <Picker.Items>
            <x:String>Select Blood Group</x:String>                           
        </Picker.Items>
    </Picker>
</StackLayout>

选择血型
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control!=null&&Element!=null)
{
Control.Background=新的SolidColorBrush(Colors.Transparent);
Control.placeholder text=“选择”;
Control.BorderBrush=新的SolidColorBrush(Colors.Transparent);
Control.VerticalContentAlignment=VerticalAlignment.Center;
Control.HorizontalContentAlignment=HorizontalAlignment.Left;
Control.Foreground=新的SolidColorBrush(Colors.Black);
var元素=作为BurndyRegPicker的元素;
element.Title=string.Empty;?
元素边距=新的Xamarin形状厚度(-10,-6,-28,4);
}
}
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control!=null&&Element!=null)
{
Control.Background=新的SolidColorBrush(Colors.Transparent);
Control.placeholder text=“选择”;
Control.BorderBrush=新的SolidColorBrush(Colors.Transparent);
Control.VerticalContentAlignment=VerticalAlignment.Center;
Control.HorizontalContentAlignment=HorizontalAlignment.Left;
Control.Foreground=新的SolidColorBrush(Colors.Black);
var元素=作为BurndyRegPicker的元素;
element.Title=string.Empty;?
元素边距=新的Xamarin形状厚度(-10,-6,-28,4);
}
}
}

Hi@jasminemathew在xamarin ios部分添加此自定义渲染器 记住在名称空间之前添加这一行 [assembly:ExportRenderer(typeof(Picker)、typeof(CustomPickerRenderer))]

公共类CustomPickerRenderer:PickerRenderer
{
私人CALayer_边界层;
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control==null)
回来
Control.BorderStyle=UITextBorderStyle.None;
var元素=作为选择器的元素;
if(元素==null)
回来
//DrawBorder(element.BorderColor.togcolor());
绘图边框(UIColor.FromRGB(156156156));
e、 NewElement.Unfocused+=(发送方,evt)=>
{
绘图边框(UIColor.FromRGB(156156156));//未聚焦,设置颜色
};
e、 NewElement.Focused+=(发送方,evt)=>
{
绘图边框(UIColor.FromRGB(245,0,47));//聚焦,设置颜色
};
}
受保护的覆盖无效OnElementPropertyChanged(对象发送方,PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(发送方,e);
var元素=作为选择器的元素;
if(元素==null)
回来
绘图边框(UIColor.FromRGB(156156156));
}
公共覆盖CGRect帧
{
获取{return base.Frame;}
设置
{
基本帧=值;
var元素=作为选择器的元素;
if(元素==null)
回来
//DrawBorder(element.BorderColor.togcolor());
绘图边框(UIColor.FromRGB(156156156));
}
}
专用空心抽框(UIColor borderColor)
{

如果(Frame.HeightHi@jasminemathew在xamarin ios部分添加此自定义渲染器 记住在名称空间之前添加这一行 [assembly:ExportRenderer(typeof(Picker)、typeof(CustomPickerRenderer))]

公共类CustomPickerRenderer:PickerRenderer
{
私人CALayer_边界层;
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control==null)
回来
Control.BorderStyle=UITextBorderStyle.None;
var元素=作为选择器的元素;
if(元素==null)
回来
//DrawBorder(element.BorderColor.togcolor());
绘图边框(UIColor.FromRGB(156156156));
e、 NewElement.Unfocused+=(发送方,evt)=>
{
绘图边框(UIColor.FromRGB(156156156));//未聚焦,设置颜色
};
e、 NewElement.Focused+=(发送方,evt)=>
{
绘图边框(UIColor.FromRGB(245,0,47));//聚焦,设置颜色
};
}
受保护的覆盖无效OnElementPropertyChanged(对象发送方,PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(发送方,e);
var元素=作为选择器的元素;
if(元素==null)
回来
绘图边框(UIColor.FromRGB(156156156));
}
公共覆盖CGRect帧
{
获取{return base.Frame;}
设置
{
基本帧=值;
var元素=作为选择器的元素;
if(元素==null)
回来
//DrawBorder(element.BorderColor.togcolor());
绘图边框(UIColor.FromRGB(156156156));
}
}
专用空心抽框(UIColor borderColor)
{

如果(Frame.Height),则在
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
    base.OnElementChanged(e);

    if (Control != null && Element != null)
    {
        Control.Background = new SolidColorBrush(Colors.Transparent);

        Control.PlaceholderText = "Select";
        Control.BorderBrush = new SolidColorBrush(Colors.Transparent);
        Control.VerticalContentAlignment = VerticalAlignment.Center;
        Control.HorizontalContentAlignment = HorizontalAlignment.Left;
        Control.Foreground = new SolidColorBrush(Colors.Black);         
        var element = Element as BurndyRegPicker; 
        element.Title = string.Empty;?                

        element.Margin = new Xamarin.Forms.Thickness(-10, -6, -28, 4);

        }
    }
}
 public class CustomPickerRenderer : PickerRenderer
{
    private CALayer _borderLayer;
    protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
    {
        base.OnElementChanged(e);

        if (Control == null)
            return;

        Control.BorderStyle = UITextBorderStyle.None;

        var element = Element as Picker;
        if (element == null)
            return;

        //DrawBorder(element.BorderColor.ToCGColor());
        DrawBorder(UIColor.FromRGB(156, 156, 156));

        e.NewElement.Unfocused += (sender, evt) =>
        {
            DrawBorder(UIColor.FromRGB(156, 156, 156)); // unfocused, set color

        };
        e.NewElement.Focused += (sender, evt) =>
        {
            DrawBorder(UIColor.FromRGB(245, 0, 47)); ; // focused, set color
        };
    }
    protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);

        var element = Element as Picker;
        if (element == null)
            return;

        DrawBorder(UIColor.FromRGB(156, 156, 156));
    }
    public override CGRect Frame
    {
        get { return base.Frame; }
        set
        {
            base.Frame = value;

            var element = Element as Picker;
            if (element == null)
                return;

            // DrawBorder(element.BorderColor.ToCGColor());
            DrawBorder(UIColor.FromRGB(156, 156, 156));
        }
    }
    private void DrawBorder(UIColor borderColor)
    {
        if (Frame.Height <= 0 || Frame.Width <= 0)
            return;

        if (_borderLayer == null)
        {
            _borderLayer = new CALayer
            {
                MasksToBounds = true,
                Frame = new CGRect(0f, Frame.Height - 1, Frame.Width, 1f),
                BorderColor = borderColor.CGColor,
                BorderWidth = 1.0f
            };

            Control.Layer.AddSublayer(_borderLayer);
            Control.BorderStyle = UITextBorderStyle.None;
        }
        else
        {
            _borderLayer.BorderColor = borderColor.CGColor;
            _borderLayer.Frame = new CGRect(0f, Frame.Height - 1, Frame.Width, 1f);
        }
    }
}.