You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何全局统一修改Xamarin.Forms中DatePicker、TimePicker的背景色及下划线颜色

Xamarin.Forms DatePicker/TimePicker 全局样式修改方案

方案1:XAML 全局隐式样式(无原生代码,优先推荐)

直接在App.xaml的资源字典中添加不带Key的隐式样式,会自动应用到应用内所有对应类型的控件,无需每个实例单独配置:

<Application.Resources>
    <ResourceDictionary>
        <!-- 全局DatePicker样式 -->
        <Style TargetType="DatePicker">
            <Setter Property="BackgroundColor" Value="Transparent" />
            <Setter Property="TextColor" Value="Black" />
            <!-- 可按需添加其他属性,比如FontSize、Margin等 -->
        </Style>
        <!-- 全局TimePicker样式 -->
        <Style TargetType="TimePicker">
            <Setter Property="BackgroundColor" Value="Transparent" />
            <Setter Property="TextColor" Value="Black" />
        </Style>
    </ResourceDictionary>
</Application.Resources>

如果仅用这个方案没去掉下划线和选中蓝色背景,再配合下面的平台自定义渲染器处理。

方案2:全局自定义渲染器(处理原生自带的下划线、选中背景)

直接替换Xamarin.Forms官方的Picker渲染器,全局生效,无需修改业务层XAML代码。

安卓端实现

using Android.Content;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

// 全局替换DatePicker渲染器
[assembly: ExportRenderer(typeof(DatePicker), typeof(GlobalDatePickerRenderer))]
// 全局替换TimePicker渲染器
[assembly: ExportRenderer(typeof(TimePicker), typeof(GlobalTimePickerRenderer))]

namespace YourAppNamespace.Droid.Renderers
{
    // DatePicker全局渲染器
    public class GlobalDatePickerRenderer : DatePickerRenderer
    {
        public GlobalDatePickerRenderer(Context context) : base(context) { }

        protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                // 去掉默认下划线
                Control.Background = null;
                // 去掉选中蓝色背景块
                Control.HighlightColor = Android.Graphics.Color.Transparent;
                // 可按需设置原生背景色
                Control.SetBackgroundColor(Android.Graphics.Color.Transparent);
            }
        }
    }

    // TimePicker全局渲染器
    public class GlobalTimePickerRenderer : TimePickerRenderer
    {
        public GlobalTimePickerRenderer(Context context) : base(context) { }

        protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                // 去掉默认下划线
                Control.Background = null;
                // 去掉选中蓝色背景块
                Control.HighlightColor = Android.Graphics.Color.Transparent;
                Control.SetBackgroundColor(Android.Graphics.Color.Transparent);
            }
        }
    }
}

iOS端实现

using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

// 全局替换DatePicker渲染器
[assembly: ExportRenderer(typeof(DatePicker), typeof(GlobalDatePickerRenderer))]
// 全局替换TimePicker渲染器
[assembly: ExportRenderer(typeof(TimePicker), typeof(GlobalTimePickerRenderer))]

namespace YourAppNamespace.iOS.Renderers
{
    public class GlobalDatePickerRenderer : DatePickerRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                // 去掉默认边框下划线
                Control.BorderStyle = UITextBorderStyle.None;
                // 去掉选中高亮背景
                Control.TintColor = UIColor.Clear;
                Control.BackgroundColor = UIColor.Clear;
            }
        }
    }

    public class GlobalTimePickerRenderer : TimePickerRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                Control.BorderStyle = UITextBorderStyle.None;
                Control.TintColor = UIColor.Clear;
                Control.BackgroundColor = UIColor.Clear;
            }
        }
    }
}

注意把代码中的YourAppNamespace替换为你自己项目的命名空间即可。两种方案可以配合使用,XAML层改通用属性,渲染器处理平台特有原生样式。

内容的提问来源于stack exchange,提问作者Chessmate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03