Steps Create custom class like below

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

namespace WaterReminder.CFDControl;

public class CfdEntry :Entry
{
    protected override void OnHandlerChanged()
    {
        base.OnHandlerChanged();

        SetBorderlessBackground();
    }

    protected override void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        base.OnPropertyChanged(propertyName);

        if (propertyName == nameof(BackgroundColor))
        {
            SetBorderlessBackground();
        }
    }

    private void SetBorderlessBackground()
    {
#if ANDROID

        if (Handler is IEntryHandler entryHandler)
        {
            if (BackgroundColor == null)
            {
                entryHandler.PlatformView.BackgroundTintList =
                            Android.Content.Res.ColorStateList.ValueOf(Colors.Transparent.ToPlatform());
            }
            else
            {
                entryHandler.PlatformView.BackgroundTintList =
                            Android.Content.Res.ColorStateList.ValueOf(BackgroundColor.ToPlatform());
            }
        }
#endif
    }
}

Step uses

Import Name Spaces. in Xaml and so on …

1
2
3
4
5
6
7
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:cfdControl="clr-namespace:WaterReminder.CFDControl">

    <cfdControl:CfdEntry  Placeholder="This is how you will use"  />

</ContentPage>

Similar gor for others

Example for Picker is shown below

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class CfdPicker : Picker
{
    protected override void OnHandlerChanged()
    {
        base.OnHandlerChanged();

        SetBorderlessBackground();
    }

    protected override void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        base.OnPropertyChanged(propertyName);

        if (propertyName == nameof(BackgroundColor))
        {
            SetBorderlessBackground();
        }
    }

    private void SetBorderlessBackground()
    {
#if ANDROID

        if (Handler is IPickerHandler pickerHandler)
        {
            if (BackgroundColor == null)
            {
                pickerHandler.PlatformView.BackgroundTintList =
                    Android.Content.Res.ColorStateList.ValueOf(Colors.Transparent.ToPlatform());
            }
            else
            {
                pickerHandler.PlatformView.BackgroundTintList =
                    Android.Content.Res.ColorStateList.ValueOf(BackgroundColor.ToPlatform());
            }
        }
#endif
    }
}