Igor Kulman

INotifyPropertyChanged snippet pre Visual Studio

· Igor Kulman

Ak programujete pre Windows Phone 7 alebo Silverlgiht, určite používate properties volajúce PropertyChanged z rouhrania INotifyPropertyChanged. Písať takéto properties ručne je zdĺhavé, ideálne je použiť snippet, ktorý všetko potrebné vygeneruje za vás.

Takýto snippet, môže vychádzať napríklad zo snippetu prop, ktorý vo Visual Studiu vygeneruje public property s getterom a setterom. Upravený snippet od Aarona Hoffmana:

<?xml version="1.0" encoding="utf-8" ?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>propn</Title>
<Shortcut>propn</Shortcut>
<Description> Code snippet for a property that calls NotifyPropertyChanged() in the setter (to assist in INotifyPropertyChanged implementation).
</Description>
<Author>Aaron Hoffman</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<ToolTip>Property type</ToolTip>
<Default>int</Default>
</Literal>
<Literal>
<ID>property</ID>
<ToolTip>Property name</ToolTip>
<Default>MyProperty</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[public $type$ $property$
{
get { return _$property$; }
set
{
if (_$property$ != value)
{
_$property$ = value;
NotifyPropertyChanged($property$PropertyName);
}
}
}
private $type$ _$property$;
public const string $property$PropertyName = "$property$";$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

Tento snippet vyžaduje , aby ViewModel implmenentoval rozhranie INotifyPropertyChanged pomocou metódy NotifyPropertyChanged, ktorú je ideálne umiestniť do predka všetkých vašich ViewModelov:

public event PropertyChangedEventHandler PropertyChanged; 

protected void NotifyPropertyChanged(string propertyname)
{
  if (PropertyChanged != null)
  {
    PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
  }
}

Použitie tohto snippetu je jednoduché, vo Visual Studio stačí napísať propn, stlačiť tab, prepísať dátový typ, znovu stlačiť tab a prepísať názov property.

Na stiahnutie: propn.snippet