如何在 Xamarin 中更改选择器弹出框的 colors/style(iOS 上的 运行 应用程序)

How to change colors/style of picker popup box in Xamarin (running app on iOS)

所以我在 Visual Studio 中编码,并在我的 xaml 文件中添加了一个选择器。一切都已设置好并且工作正常。我什至能够更改选择器本身的文本、标题、背景等颜色...

但是当您单击选择器时,会弹出一个框,其中包含要 select 的项目...您如何访问这些 colors/styles 以更改它们?

我的整个应用程序看起来是自定义的,但那个小选择器框看起来是默认的。 (蓝色按钮浅灰色背景和灰色文本)

顺便说一下,我是 运行 iOS 模拟器上的应用程序。

请帮忙。谢谢

根据所提供的信息,我相信您需要为每个平台(iOS 和 Android)制作自定义渲染器,您可以在其中手动更改这些颜色。请提供您的代码。

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/introduction#:~:text=%20The%20process%20for%20creating%20a%20custom%20renderer,be%20used%20to%20render%20the%20Xamarin.Forms...%20More%20

您需要自定义渲染器来更改项目和按钮样式。

这是一个例子:

[assembly:ExportRenderer(typeof(Picker), typeof(MyiOSPicker))]
namespace App493.iOS
{
    public class MyiOSPicker : PickerRenderer, IUIPickerViewDelegate
    {
        IElementController ElementController => Element as IElementController;

        public MyiOSPicker()
        {

        }

        [Export("pickerView:viewForRow:forComponent:reusingView:")]
        public UIView GetView(UIPickerView pickerView, nint row, nint component, UIView view)
        {

            UILabel label = new UILabel
            {
                //here you can set the style of item!!!

                TextColor = UIColor.Red,
                Text = Element.Items[(int)row].ToString(),
                TextAlignment = UITextAlignment.Center,

            };
            return label;
        }


        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                UIPickerView pickerView = (UIPickerView)Control.InputView;
                pickerView.WeakDelegate = this;
                pickerView.BackgroundColor = UIColor.Yellow; //set the background color of pickerview

                //To custom the done button
                var toolBar = (UIToolbar)Control.InputAccessoryView;
                var doneButton = toolBar.Items[1];

                UITextAttributes att = new UITextAttributes
                {
                    Font = UIFont.SystemFontOfSize(20.0f, UIFontWeight.Bold),
                    TextColor = UIColor.Green
                };

                doneButton.SetTitleTextAttributes(att, UIControlState.Normal);
            }

        }
    }
}

结果如下: