Skip to content

Instantly share code, notes, and snippets.

@chrisg32
Last active October 2, 2023 05:47
Show Gist options
  • Save chrisg32/63791ee34159f834be06cdf0ea07f9bc to your computer and use it in GitHub Desktop.
Save chrisg32/63791ee34159f834be06cdf0ea07f9bc to your computer and use it in GitHub Desktop.
Several ReSharper/Rider templates for fast MVVM development.

CG Templates

Several ReSharper/Rider templates for fast MVVM development.

These templates should be compatible with Jetbrains RESharper and Rider;

Table of contents

  • prp - Creates a ViewModel property compatible with Prism BindableBase.
  • prpr - Define a property with backing field for ReactiveUI
  • depend - Creates a Xamarin dependency property.
  • fact - XUnit Fact/Test Method
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Shortcut/@EntryValue">fact</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Description/@EntryValue">XUnit fact</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Text/@EntryValue">[Fact]&#xD;
public void $TestName$(){&#xD;
//Arrange&#xD;
$END$&#xD;
&#xD;
//Act&#xD;
&#xD;
//Assert&#xD;
}</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Reformat/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Scope/=C3001E7C0DA78E4487072B7E050D86C5/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue">InCSharpFile</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Field/=TestName/@KeyIndexDefined">True</s:Boolean>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FD8E74F64A2AB345B69B5FB355A3BAC8/Field/=TestName/Order/@EntryValue">0</s:Int64></wpf:ResourceDictionary>
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Shortcut/@EntryValue">prp</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Description/@EntryValue">Define a property with backing field</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Text/@EntryValue">private $type$ _$fieldName$;&#xD;
&#xD;
public $type$ $PropertyName$&#xD;
{&#xD;
get =&gt; _$fieldName$;&#xD;
set =&gt; SetProperty(ref _$fieldName$, value);&#xD;
}$END$</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Reformat/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Scope/=C3001E7C0DA78E4487072B7E050D86C5/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue">InCSharpFile</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">7.0</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=type/@KeyIndexDefined">True</s:Boolean>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=type/InitialRange/@EntryValue">1</s:Int64>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=type/Order/@EntryValue">0</s:Int64>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=PropertyName/@KeyIndexDefined">True</s:Boolean>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=PropertyName/Order/@EntryValue">1</s:Int64>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=fieldName/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=fieldName/Expression/@EntryValue">decapitalize(PropertyName)</s:String>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=fieldName/InitialRange/@EntryValue">-1</s:Int64>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D520E0EFBC97E34B8581CFCCA2D95DD0/Field/=fieldName/Order/@EntryValue">2</s:Int64></wpf:ResourceDictionary>
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Shortcut/@EntryValue">prpr</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Description/@EntryValue">Define a property with backing field for ReactiveUI</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Text/@EntryValue">private $type$ _$fieldName$;&#xD;
&#xD;
public $type$ $PropertyName$&#xD;
{&#xD;
get =&gt; _$fieldName$;&#xD;
set =&gt; this.RaiseAndSetIfChanged(ref _$fieldName$, value);&#xD;
}$END$</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Reformat/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Scope/=C3001E7C0DA78E4487072B7E050D86C5/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue">InCSharpFile</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=type/@KeyIndexDefined">True</s:Boolean>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=type/InitialRange/@EntryValue">1</s:Int64>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=type/Order/@EntryValue">0</s:Int64>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=PropertyName/@KeyIndexDefined">True</s:Boolean>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=PropertyName/Order/@EntryValue">1</s:Int64>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=fieldName/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=fieldName/Expression/@EntryValue">decapitalize(PropertyName)</s:String>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=fieldName/InitialRange/@EntryValue">-1</s:Int64>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9A54D8DC55AEA141899D45F291971C60/Field/=fieldName/Order/@EntryValue">2</s:Int64></wpf:ResourceDictionary>
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Shortcut/@EntryValue">depend</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Description/@EntryValue">Creates a Xamarin Forms dependency property.</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Text/@EntryValue">public static readonly BindableProperty $PropertyName$Property = BindableProperty.Create(nameof($PropertyName$), typeof($type$), typeof($class$), propertyChanged: On$PropertyName$Changed);&#xD;
&#xD;
private static void On$PropertyName$Changed(BindableObject bindable, object oldObjValue, object newObjValue)&#xD;
{&#xD;
var source = ($class$) bindable;&#xD;
var oldValue = ($type$) oldObjValue;&#xD;
var newValue = ($type$) newObjValue;&#xD;
$END$&#xD;
}&#xD;
&#xD;
public $type$ $PropertyName$&#xD;
{&#xD;
get =&gt; ($type$) GetValue($PropertyName$Property);&#xD;
set =&gt; SetValue($PropertyName$Property, value);&#xD;
}</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Reformat/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Categories/=Xamarin/@EntryIndexedValue">Xamarin</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Scope/=C3001E7C0DA78E4487072B7E050D86C5/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue">InCSharpFile</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=type/@KeyIndexDefined">True</s:Boolean>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=type/InitialRange/@EntryValue">3</s:Int64>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=type/Order/@EntryValue">0</s:Int64>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=PropertyName/@KeyIndexDefined">True</s:Boolean>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=PropertyName/InitialRange/@EntryValue">4</s:Int64>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=PropertyName/Order/@EntryValue">1</s:Int64>
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=class/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=class/Expression/@EntryValue">typeName()</s:String>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=class/InitialRange/@EntryValue">-1</s:Int64>
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A471E091957A3B46A0306DEDD106A81A/Field/=class/Order/@EntryValue">2</s:Int64></wpf:ResourceDictionary>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment