WPF カスタムコントロール

そろそろ仕事が落ち着いてきたんで、WPF2ちゃんねるブラウザ作成計画を進めていこうかと。名前はもう MagicPot で決定ってことで、日記にもこの名前でタグを付けてみる。

で、今日は、WPF Docking Library をちょっと触ってみた。その過程で気づいたんですけど、System.Windows.Controls.UserControl だと、下の XAML コードみたいな、名前つきの子要素を持つのができないんですね。

<!-- DockManager は UserControl 派生クラス -->
<docklib:DockManager Name="dockManager">
  <Button Name="button1" Content="ボタン1"/>
  <Button Name="button2" Content="ボタン2"/>
  <Button Name="button3" Content="ボタン3"/>
</docklib:DockManager>

「Cannot set Name attribute value 'button1' on element 'Button'. 'Button' is under the scope of element 'DockManager', which already had a name registered when it was defined in another scope.」ってエラーが出てきて困まりました。新幹線の中で書いてたんで、ネットで調べることも出来ず、エラーの意味が分からなくて真剣に悩みました。
あとで検索してみたらすぐに同じようなエラーで困ってるって話が出てきましたが↓。

Cannot set Name attribute value
Building a control which holds content: CustomControl vs. MarkupSubclassing vs. UserControl

子要素を持たせたければユーザコントロールじゃなくてカスタムコントロールにしろ(Control 派生クラスを、XAML 使わずに .cs だけで書け)とのこと。ちょっとめんどくさい。