This SDK was officially merged into Xamarin.Forms v3.1.0.
Because this SDK supports Xamarin.Forms v2.5.0.280555, I will continue to maintain it for teams who have not yet upgraded to Xamarin.Forms v3.1.0 or higher.
For developers using Xamarin.Forms 3.1.0 or higher, I recommend removing this NuGet package from your csproj and using the APIs included in Xamarin.Forms: Xamarin.Forms.Entry.ReturnType & Xamarin.Forms.Entry.ReturnCommand.
| ReturnType | Android | iOS | UWP |
|---|---|---|---|
| Default | ![]() |
![]() |
![]() |
| Done | ![]() |
![]() |
![]() |
| Go | ![]() |
![]() |
![]() |
| Next | ![]() |
![]() |
![]() |
| Search | ![]() |
![]() |
![]() |
| Send | ![]() |
![]() |
![]() |
Platform Support
| Platform | Supported | Version |
|---|---|---|
| Xamarin.iOS | Yes | iOS 8+ |
| Xamarin.iOS Unified | Yes | iOS 8+ |
| Xamarin.Android | Yes | API 15+ |
| Windows 10 UWP | Yes | 10+ |
| Windows Phone Silverlight | No | |
| Windows Phone RT | No | |
| Windows Store RT | No | |
| Xamarin.Mac | No |
This plugin can be consumed as a CustomRenderer Control or as an Effect.
- Available on NuGet: https://www.nuget.org/packages/Xam.Plugins.Forms.CustomReturnEntry/
- Install into your PCL project and Client projects.
In the FinishedLaunching method of AppDelegate.cs, add CustomReturnEntryRenderer.Init();:
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
...
global::Xamarin.Forms.Forms.Init();
EntryCustomReturn.Forms.Plugin.iOS.CustomReturnEntryRenderer.Init();
...
}
}Note: You must call EntryCustomReturn.Forms.Plugin.iOS.CustomReturnEntryRenderer.Init(); after you call global::Xamarin.Forms.Forms.Init();
In the Oncreated method of MainActivity.cs, add CustomReturnEntryRenderer.Init();:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
...
global::Xamarin.Forms.Forms.Init(this, bundle);
EntryCustomReturn.Forms.Plugin.Android.CustomReturnEntryRenderer.Init();
...
}
}Note: You must call EntryCustomReturn.Forms.Plugin.Android.CustomReturnEntryRenderer.Init(); after you call global::Xamarin.Forms.Forms.Init(this, bundle);
In the OnLaunched method of App.xaml.cs, add CustomReturnEntryRenderer.Init();:
public partial class App : Application
{
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
...
global::Xamarin.Forms.Forms.Init(e);
EntryCustomReturn.Forms.Plugin.UWP.CustomReturnEntryRenderer.Init();
...
}
}Note: You must call EntryCustomReturn.Forms.Plugin.UWP.CustomReturnEntryRenderer.Init(); after you call global::Xamarin.Forms.Forms.Init(e);
This plugin can be consumed as a CustomRenderer Control or as an Effect.
The ReturnType property is an enum containing 6 different types: Default, Go, Next, Done, Send, Search.
var goReturnTypeCustomEntry = new CustomReturnEntry
{
ReturnType = EntryCustomReturn.Forms.Plugin.Abstractions.ReturnType.Go
};<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnType="Go"/>
</ContentPage.Content>
</ContentPage>ReturnType can also be used as a Bindable Property to bind to a ViewModel
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new CustomReturnEntry();
customReturnEntry.SetBinding(CustomReturnEntry.ReturnTypeProperty, nameof(MyViewModel.EntryReturnType));<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnType="{Binding EntryReturnType}"/>ReturnCommand will fire when the user finalizes the text in an entry with the return key.
goReturnTypeCustomEntry.ReturnCommand = new Command(() => Navigation.PushAsync(new ContentPage()));Use the Coded UI example above to initialize a Command in the XAML Code Behind
ReturnCommand can also be used as a Bindable Property to bind to a ViewModel
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new CustomReturnEntry();
customReturnEntry.SetBinding(CustomReturnEntry.ReturnCommandProperty nameof(MyViewModel.EntryReturnCommand));<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:SimpleXamlSample"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions"
BindingContext="{Binding Source={local:MyViewModel}}">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnCommand="{Binding EntryReturnCommand}"/>
</ContentPage.Content>
</ContentPage>The ReturnCommandParameter property is an object that can be passed to the ReturnCommand property.
goReturnTypeCustomEntry.ReturnCommand = new Command<string>(async title => await DisplayAlert(title, "", "Ok"));
goReturnTypeCustomEntry.ReturnCommandParameter = "Return Button Tapped";<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnCommandParameter="Return Button Tapped"/>
</ContentPage.Content>
</ContentPage>ReturnCommandParameter can also be used as a Bindable Property to bind to a ViewModel
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new CustomReturnEntry();
customReturnEntry.SetBinding(CustomReturnEntry.ReturnCommandParameterProperty, nameof(MyViewModel.EntryReturnCommandParameter));<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnCommandParameter="{Binding EntryReturnCommandParameter}"/>This plugin can be consumed as a CustomRenderer Control or as an Effect.
The ReturnType property is an enum containing 6 different types: Default, Go, Next, Done, Send, Search.
var goReturnTypeEntry = new Entry()
CustomReturnEffect.SetReturnType(goReturnTypeEntry, EntryCustomReturn.Forms.Plugin.Abstractions.ReturnType.Go);<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<Entry
x:Name = "GoReturnTypeEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnType="{x:Static entryCustomReturn:ReturnType.Default}"/>
</ContentPage.Content>
</ContentPage>ReturnType can also be used as a Bindable Property to bind to a ViewModel
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new Entry();
customReturnEntry.SetBinding(CustomReturnEffect.ReturnTypeProperty, nameof(MyViewModel.EntryReturnType));<Entry
x:Name = "GoReturnTypeEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnType="{Binding EntryReturnType}"/>ReturnCommand will fire when the user finalizes the text in an entry with the return key.
var goReturnTypeEntry = new Entry()
CustomReturnEffect.SetReturnCommand(goReturnTypeEntry, new Command(() => Navigation.PushAsync(new ContentPage()));Use the Coded UI example above to initialize a Command in the XAML Code Behind
ReturnCommand can also be used as a Bindable Property to bind to a ViewModel
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new Entry();
customReturnEntry.SetBinding(CustomReturnEffect.ReturnCommandProperty, nameof(MyViewModel.EntryReturnCommand));<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="SimpleXamlSample"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions"
BindingContext="{Binding Source={local:MyViewModel}}">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnCommand="{Binding EntryReturnCommand}"/>
</ContentPage.Content>
</ContentPage>The ReturnCommandParameter property is an object that can be passed to the ReturnCommand property.
var goReturnTypeEntry = new Entry()
CustomReturnEffect.SetReturnCommand(goReturnTypeEntry, new Command<string>(async title => await DisplayAlert(title, "", "Ok")));
CustomReturnEffect.SetReturnCommandParameter(goReturnTypeEntry, "Return Button Tapped");<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnCommandParameter="Return Button Tapped"/>
</ContentPage.Content>
</ContentPage>ReturnCommandParameter can also be used as a Bindable Property to bind to a ViewModel
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new Entry();
customReturnEntry.SetBinding(CustomReturnEffect.ReturnCommandParameterProperty, nameof(MyViewModel.EntryReturnCommandParameter));<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnCommandParameter="{Binding EntryReturnCommandParameter}"/>












