I created a CustomControl but creating a BindingProperty I can not do a binding
Custom Control XAML Code
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="CustomControls.Controls.CustomEditor">
<Editor x:Name="edt" Text="{Binding Text, Mode=TwoWay}" />
</ContentView>
CustomControl CS Code
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class CustomEditor : ContentView
{
public CustomEditor ()
{
InitializeComponent ();
this.BindingContext = this;
}
public static readonly BindableProperty TextProperty = BindableProperty.Create(
propertyName: nameof(Text),
returnType: typeof(string),
declaringType: typeof(CustomEditor),
defaultValue: "",
defaultBindingMode: BindingMode.TwoWay,
propertyChanged: (b, o, n) =>
{
if (b is CustomEditor view)
view.edt.Text = n.ToString();
});
public string Text
{
get => (string)GetValue(TextProperty);
set
{
SetValue(TextProperty, value);
base.OnPropertyChanged(nameof(Text));
}
}
}
MainPage XAML that consumes CustomControl
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:CustomControls"
xmlns:controls="clr-namespace:CustomControls.Controls"
x:Class="CustomControls.MainPage">
<StackLayout Padding="10">
<Label Text="{Binding Email}"/>
<Editor x:Name="txtTeste" Text="{Binding Email}"/>
<controls:CustomEditor Text="{Binding Email, Mode=TwoWay}"/>
</StackLayout>
</ContentPage>
MainPage CS
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
BindingContext = this;
this.Email = "[email protected]";
}
private string _email;
public string Email
{
get { return _email; }
set { _email = value; base.OnPropertyChanged(nameof(Email)); }
}
}
In MainPage in the customControl if you start with a HardCode it already opens the app with the Editor filled however any change in the Email property it does not reflect in the Editor and if it changes the value of the Editor it does not reflect in the email property, Situation?