コードスニペット

プロパティの記載が一々同じことを書かないとで面倒だなーという部分を「コードスニペット」としてまとめると便利です。
通常の「prop」だと「public int MyProperty { get; set; }」だけで、これはこれで楽なのですが、制御部分もという場合は物足りません。

MSエヴァンジェリストの高橋忍氏作成された【Dependency Property for Windows Phone コードスニペット】これをベースに改造をして「添付プロパティ」としてコードを展開するようにしました。
ファイルはテキストとして「DependencyPropertyWP.snippet」で保存しますが、文字コードをutf-8で保存しましょう。
マイ ドキュメントの「Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets」に保存してください。
VS内でpropwp2[tab]で使用できます。

Windowsストアアプリで使用する場合は「[System.ComponentModel.Description(“説明文”), System.ComponentModel.CategoryAttribute(“タブ”)]」はコメントアウトすればOKです。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2008/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Dependency Property for Windows Phone</Title>
      <Shortcut>propwp2</Shortcut>
      <Description>Dependency Property for Windows Phone コード スニペット</Description>
      <Author>shinobu takahashi / CryEarth tomoyuki sasaki</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>type</ID>
          <ToolTip>プロパティの型</ToolTip>
          <Default>int</Default>
        </Literal>
        <Literal>
          <ID>name</ID>
          <ToolTip>プロパティ名</ToolTip>
          <Default>MyPropName</Default>
        </Literal>
        <Literal>
          <ID>ownerclass</ID>
          <ToolTip>このプロパティを定義しているここのクラスです</ToolTip>
          <Default>ownerclass</Default>
        </Literal>
      </Declarations>
      <Code Language="CSharp">
        <![CDATA[[System.ComponentModel.Description("説明文"), System.ComponentModel.CategoryAttribute("タブ")]
	 public $type$ $name$
        {
            get { return ($type$)GetValue($name$Property); }
            set { SetValue($name$Property, value); }
        }

        public static readonly DependencyProperty $name$Property =
            DependencyProperty.Register(
				"$name$",
				typeof($type$),
				typeof($ownerclass$),
				new PropertyMetadata(   // メタデータ
					"",		// デフォルト値
					new PropertyChangedCallback(On$name$Changed)) );

	private static void On$name$Changed(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            $ownerclass$ userControl = obj as $ownerclass$;

            if (userControl != null)
            {
                $type$ newValue = ($type$)e.NewValue;
            }
        }

$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください