WPF カスタムコントロール
そろそろ仕事が落ち着いてきたんで、WPF で2ちゃんねるブラウザ作成計画を進めていこうかと。名前はもう 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 だけで書け)とのこと。ちょっとめんどくさい。