Lo de crear Code Snippets (Fragentos de Código) es una de esas cosas que siempre he dejado para aprender más tarde y al final nunca he aprendido... hasta hoy, que tenía que hacer un objeto con más de treinta propiedades que lanzasen el PropertyChanged y no he podido retrasarlo más.
Para aumentar mi productividad he perdido un poco el tiempo y me he creado un Code Snipplet para las propiedades que implementan el INotifyPropertyChanged, lo he llamado propNot
Para ello, en Visual Studio me fui a Tools y desde allí al Code Snippets Manager. Una vez allí seleccioné C# y luego copié
Me situé en esa carpeta, creé un fichero .snippet y escribí esto:
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>propNot</Title> <Shortcut>propNot</Shortcut> <Description>Code snippet for properties with NotifyPropertyChanged</Description> <Author>Chan</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> <SnippetType>SurroundsWith</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>privName</ID> <Default>privName</Default> <ToolTip>Private name of the property</ToolTip> </Literal> <Literal> <ID>pubName</ID> <Default>pubName</Default> <ToolTip>Public name of the property</ToolTip> </Literal> <Literal> <ID>type</ID> <Default>string</Default> <ToolTip>Type of the property</ToolTip> </Literal> </Declarations> <Code Language="csharp"><![CDATA[private $type$ $privName$; public $type$ $pubName$ { get { return $privName$; } set { $privName$ = value; // Call NotifyPropertyChanged when the property is updated NotifyPropertyChanged("$pubName$"); } }]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
Probado y funcionando, tanto el binding TwoWay como los Code Snippets. Ahora que sé cómo se hace lo voy a hacer muy a menudo. --EDITO-- Mentí, no los hago a menudo porque soy MUY flojo, pero sí que uso mucho este otro snippet:
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>INotify region with the necessary methods to implement the interface</Title> <Shortcut>inotifyregion</Shortcut> <Description>Creates region with the necessary methods to implement the interface INotifyPropertyChanged</Description> <Author>Jose Sanchez</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> <SnippetType>SurroundsWith</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations /> <Code Language="csharp"><![CDATA[#region INotifyMethods // Declare the event public event PropertyChangedEventHandler PropertyChanged; // Create the OnPropertyChanged method to raise the event protected void NotifyPropertyChanged(string name) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); } } #endregion]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
No hay comentarios:
Publicar un comentario