M.BindableProperty.Generator 0.4.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package M.BindableProperty.Generator --version 0.4.1
NuGet\Install-Package M.BindableProperty.Generator -Version 0.4.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="M.BindableProperty.Generator" Version="0.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add M.BindableProperty.Generator --version 0.4.1
#r "nuget: M.BindableProperty.Generator, 0.4.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install M.BindableProperty.Generator as a Cake Addin
#addin nuget:?package=M.BindableProperty.Generator&version=0.4.1

// Install M.BindableProperty.Generator as a Cake Tool
#tool nuget:?package=M.BindableProperty.Generator&version=0.4.1

NuGet GitHub issues GitHub stars last commit

Maui.BindableProperty.Generator

Source generator that automatically transforms fields into BindableProperties that can be used in MAUI.

Installation

First, install NuGet. Then, install M.BindableProperty.Generator from the package manager console:

PM> Install-Package M.BindableProperty.Generator

Usage - Simple implementation

Just decorate field with the Bindable attribute.

    using Maui.BindableProperty.Generator.Core;

    public partial class CustomEntry : ContentView
    {
        [AutoBindable]
        private string _placeholder;
    }

the prevoius code will generate this:

    public partial class CustomEntry
    {
        public static readonly Microsoft.Maui.Controls.BindableProperty PlaceholderProperty = Microsoft.Maui.Controls.BindableProperty.Create(nameof(Placeholder), typeof(string), typeof(CustomEntry), default(string));
        public string Placeholder
        {
            get => (string)GetValue(PlaceholderProperty);
            set => SetValue(PlaceholderProperty, value);
        }
    }

Usage - Custom property name

Just decorate field with the Bindable attribute.

    using Maui.BindableProperty.Generator.Core;

    public partial class CustomEntry : ContentView
    {
        [AutoBindable(PropertyName = "Text")]
        private string _t;
    }

the prevoius code will generate this:

    public partial class CustomEntry
    {
        public static readonly Microsoft.Maui.Controls.BindableProperty TextProperty = Microsoft.Maui.Controls.BindableProperty.Create(nameof(Text), typeof(string), typeof(CustomEntry), default(string));
        public string Text
        {
            get => (string)GetValue(TextProperty);
            set => SetValue(TextProperty, value);
        }
    }

Usage - OnChanged method

Just decorate field with the Bindable attribute. The 'OnChanged' method must have only one parameter (must match the type of the field)

    using Maui.BindableProperty.Generator.Core;

    public partial class CustomEntry : ContentView
    {
        [AutoBindable(OnChanged = nameof(OnTextChanged))]
        private string _text;

        private void OnTextChanged(string newValue)
        { 
            // Do stuff here
        }
    }

the prevoius code will generate this:

    public partial class CustomEntry
    {
        public static readonly Microsoft.Maui.Controls.BindableProperty TextProperty = Microsoft.Maui.Controls.BindableProperty.Create(nameof(Text), typeof(string), typeof(CustomEntry), default(string));
        public string Text
        {
            get => (string)GetValue(TextProperty);
            set =>
            {
                SetValue(TextProperty, value);
                this.OnTextChanged(value);
            }
        }
    }

Project status

  • ✅ Simple implementation - Done
  • ✅ Custom property name - Done
  • 🔲 Custom Parameters - In Progress
  • ✅ OnChanged method - Done
  • 🔲 Property Accessibility - Pending

Extra info

This repo is using part of the code of CodeWriter to generate the CSharp files, thanks to the author.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

  • .NETStandard 2.0

    • No dependencies.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on M.BindableProperty.Generator:

Package Downloads
Sm.Maui.BottomSheet

ModalBottomSheet view for .NET MAUI

The49.Maui.ContextMenu

.NET MAUI library for Android and iOS to open a native context menu on long press.

SimpleRatingControl.MAUI

Simple Rating Control for .NET MAUI

Yang.Maui.Helper.Controls

Package Description

tsjdevapps.MauiControlsLib

Controls Library for .NET MAUI

GitHub repositories (3)

Showing the top 3 popular GitHub repositories that depend on M.BindableProperty.Generator:

Repository Stars
VladislavAntonyuk/MauiSamples
.NET MAUI Samples
nor0x/Dots
the 🙂 friendly .NET SDK manager
the49ltd/The49.Maui.BottomSheet
.NET MAUI library used to display pages as Bottom Sheets
Version Downloads Last updated
0.11.1 20,724 6/28/2023
0.11.0 168 6/28/2023
0.10.0 5,578 3/28/2023
0.9.3 7,568 12/7/2022
0.9.2 2,793 11/15/2022
0.9.1 878 9/27/2022
0.9.0 1,204 8/30/2022
0.8.3 1,281 7/27/2022
0.8.2 3,919 7/4/2022
0.8.1 521 7/1/2022
0.8.0 514 6/29/2022
0.7.0 629 4/28/2022
0.6.0 498 4/28/2022
0.5.0 490 4/21/2022
0.4.1 502 4/14/2022
0.4.0 509 4/12/2022
0.3.3 478 4/1/2022
0.3.2 471 4/1/2022
0.3.0 503 4/1/2022

Bugfix - OnChanged method refactored to allow BindingPropertyChangedDelegate