This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.

Use bprop tab tab to generate commands in ViewModels with this snippet

The result of the snippet

Save the snippet file as {name}.snippet in Visual Studio’s folder: C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC#\Snippets\1033\Visual C#

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<Title>Bindable Property</Title>
			<Shortcut>bprop</Shortcut>
			<Description>Xamarin BindableProperty declaration code snippet</Description>
			<Author>banditoth.hu</Author>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
			</SnippetTypes>
		</Header>
		<Snippet>
			<Declarations>
				<Literal>
					<ID>PropertyName</ID>
					<ToolTip>The property's name</ToolTip>
					<Default>Foo</Default>
				</Literal>
				<Literal>
					<ID>Type</ID>
					<ToolTip>The type of the property</ToolTip>
					<Default>object</Default>
				</Literal>
				<Literal>
					<ID>DefaultValue</ID>
					<ToolTip>The default value of the property</ToolTip>
					<Default>null</Default>
				</Literal>
				<Literal>
					<ID>BindingMode</ID>
					<ToolTip>The binding mode of the property</ToolTip>
					<Default>TwoWay</Default>
				</Literal>
				<Literal>
					<ID>PropertyChangedHandler</ID>
					<ToolTip>The property changed handler method</ToolTip>
					<Default>null</Default>
				</Literal>
				<Literal>
					<ID>PropertyChangingHandler</ID>
					<ToolTip>The property changing handler method</ToolTip>
					<Default>null</Default>
				</Literal>
			</Declarations>
			<Code Language="csharp">
				<![CDATA[
        public static readonly BindableProperty $PropertyName$Property = BindableProperty.Create(
                                        propertyName: nameof($PropertyName$),
                                        returnType: typeof($Type$),
                                        declaringType: typeof(View),
                                        defaultValue: $DefaultValue$,
                                        defaultBindingMode: BindingMode.$BindingMode$,
                                        propertyChanged: $PropertyChangedHandler$,
					propertyChanging: $PropertyChangingHandler$);

        public $Type$ $PropertyName$
        {
            get { return ($Type$)GetValue($PropertyName$Property); }
            set { SetValue($PropertyName$Property, value); }
        }
		$end$]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>