Hi! How are you doing? 今回は、WPF小ネタでいきましょ~

【小ネタその1】

Visual Studio で 追加 - 新しい項目 - カスタムコントロール(WPF)とやると、カスタムコントロールの雛形ソースが生成されます。

生成されたクラスは、Controlを継承したクラスとなっていますが、この継承元を具体的なコントロール、例えば「Button」とかにすると、できたコントロールは基本的にButtonのプロパティを持っているので、せっせと DependencyProperty でプロパティを定義しなくても、 Command だの CommandParameter だのが使える!

当たり前だけど、便利(^^)/

 

【小ネタその2】

生成されるのは、カスタムコントロールの雛形の.csファイルだけではなく、ThemesフォルダのGeneric.xamlにスタイル定義も追加されます。

で、そのテンプレートに ContentPresenter タグを突っ込んでやれば、子要素を持つカスタムコントロールができるんですが、その1のようにもともと子要素を持てるコントロールを継承していれば何の問題もないのですが、継承元を「Control」のままにして、ContentPresenter を突っ込んでもエラーが出ちゃいます…

なんでやねん!だってControlは子要素持てないもん!

というわけで、Control を ContentControl に変更!ContentControlは子要素を持てるので、幸せになれます。

 

以上WPFでカスタムコントロールを作ろう小ネタでした!