WPF教程

自制Snippet —— INotifyPropertyChangedhtml教程

时间:2013-6-20 1:04:48  作者:WPF之家  来源:http://www.wpf123.com  查看:164  评论:0
内容摘要:  自己做了自己用,参照了MSDN的标准写法,就不多废话了,直接贴上,最后附用法:  先贴类的Snippet——快捷键为notify<?xml version="1.0" encoding="utf-...

  自己做了自己用,参照了MSDN的标准写法,就不多废话了,直接贴上,最后附用法:

  先贴类的Snippet——快捷键为notify

  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  
  3.     <CodeSnippet Format="1.0.0">  
  4.         <Header>  
  5.             <Title>notify</Title>  
  6.             <Shortcut>notify</Shortcut>  
  7.             <Description>Code snippet for System.Diagnostics.Debug.WriteLine</Description>  
  8.             <Author>Microsoft Corporation</Author>  
  9.             <SnippetTypes>  
  10.                 <SnippetType>Expansion</SnippetType>  
  11.             </SnippetTypes>  
  12.         </Header>  
  13.         <Snippet>  
  14.             <Declarations>  
  15.                 <Literal Editable="true">  
  16.                     <ID>name</ID>  
  17.                      <ToolTip>class name</ToolTip>  
  18.                      <Default>MyClass</Default>  
  19.                         <Function>  
  20.                         </Function>  
  21.                 </Literal>  
  22.             </Declarations>  
  23.             <Code Language="csharp"><!--[CDATA[class $name$ : INotifyPropertyChanged  
  24.                 {  
  25.     $end$  
  26.     public event PropertyChangedEventHandler PropertyChanged;  
  27.     private void NotifyPropertyChanged(String info)  
  28.     {  
  29.         if (PropertyChanged != null)  
  30.         {  
  31.             PropertyChanged(this, new PropertyChangedEventArgs(info));  
  32.         }  
  33.     }  
  34.     }         
  35.                 ]]-->  
  36.             </Code>  
  37.         </Snippet>  
  38.     </CodeSnippet>  
  39. </CodeSnippets>  

  再贴成员变量的Snippet ——快捷键为nn

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  
  3.   <CodeSnippet Format="1.0.0">  
  4.     <Header>  
  5.       <SnippetTypes>  
  6.         <SnippetType>Expansion</SnippetType>  
  7.       </SnippetTypes>  
  8.       <Title>nn</Title>  
  9.       <Author>Microsoft Corporation</Author>  
  10.       <Description>Code snippet for property and backing field and INotifyPropertyChanged</Description>  
  11.       <HelpUrl>  
  12.       </HelpUrl>  
  13.       <Shortcut>nn</Shortcut>  
  14.     </Header>  
  15.     <Snippet>  
  16.       <Declarations>  
  17.         <Literal Editable="true">  
  18.           <ID>type</ID>  
  19.           <ToolTip>Property type</ToolTip>  
  20.           <Default>int</Default>  
  21.           <Function>  
  22.           </Function>  
  23.         </Literal>  
  24.         <Literal Editable="true">  
  25.           <ID>property</ID>  
  26.           <ToolTip>Property name</ToolTip>  
  27.           <Default>MyProperty</Default>  
  28.           <Function>  
  29.           </Function>  
  30.         </Literal>  
  31.         <Literal Editable="true">  
  32.           <ID>field</ID>  
  33.           <ToolTip>The variable backing this property</ToolTip>  
  34.           <Default>myVar</Default>  
  35.           <Function>  
  36.           </Function>  
  37.         </Literal>  
  38.       </Declarations>  
  39.       <Code Language="csharp"><!--[CDATA[private $type$ $field$;  
  40. public $type$ $property$  
  41. {  
  42.     get { return this.$field$;}  
  43.     set   
  44.     {   
  45.         if(this.$field$ != value)  
  46.         {  
  47.             this.$field$ = value;  
  48.             this.NotifyPropertyChanged("$property$");  
  49.         }  
  50.     }  
  51. }  
  52. $end$]]--></Code>  
  53.     </Snippet>  
  54.   </CodeSnippet>  
  55. </CodeSnippets>  

  用法:在VS2010中(08估计也一样)中先键入notify,然后按tab,然后改一下类名,完了按回车,就在回车停下的地方按nn,然后按tab,按顺序改一堆东西,有类型等等,记住按顺序,因为后面的依赖前面的。

  默认生成的类:

  1. class MyClass : INotifyPropertyChanged  
  2.     {  
  3.         private int myVar;  
  4.         public int MyProperty  
  5.         {  
  6.             get { return this.myVar; }  
  7.             set  
  8.             {  
  9.                 if (this.myVar != value)  
  10.                 {  
  11.                     this.myVar = value;  
  12.                     this.NotifyPropertyChanged("MyProperty");  
  13.                 }  
  14.             }  
  15.         }  
  16.           
  17.         public event PropertyChangedEventHandler PropertyChanged;  
  18.         private void NotifyPropertyChanged(String info)  
  19.         {  
  20.             if (PropertyChanged != null)  
  21.             {  
  22.                 PropertyChanged(thisnew PropertyChangedEventArgs(info));  
  23.             }  
  24.         }  
  25.     }         

  为什么我要做成两个Snippet呢?因为很可能一个INotifyPropertyChanged类中有好多个变量,这样模块化Snippet比较好。

  本文来自thy38的博客,原文地址:http://blog.csdn.net/thy38/article/details/5902441


标签:自制Snippet   INotifyPropertyChanged 

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。本文出自“wpf之家”,请务必保留此出处:http://www.wpf123.com

相关评论
Copyright © 2009-2014 WPF之家(http://www.wpf123.com/) All rights reserved
 Powered by WPF之家
鄂ICP备13006396号