ItemsおよびItemsSourceも持つボタンであるカスタムコントロールを作成しますか?
-
06-07-2019 - |
質問
ContextMenu
を使用してアイテムを表示する SplitButton
コントロールを作成しようとしています。現在、 SplitButton
は Button
から派生しています。 SplitButton
の ContextMenu
を呼び出してそのアイテムを表示する小さなアイコンである PART_DropDownInitiator
があります。
問題は、 SplitButton
の Template
またはスタイル内にデフォルトの ContextMenu
をセットアップしようとしていることです。コントロールのユーザーは自分で行う必要はありません。最初は、ユーザーにxamlの SplitButton.ContextMenu.Items
プロパティを設定するだけでよいと考えましたが、それは不可能に思えます。ここで、 ContextMenu
が ContextMenu
である SplitButton
に Items
および ItemsSource
プロパティを追加します。 > SplitButton のテンプレートはそれにバインドできます。そして、ユーザーはxamlで Items
または ItemsSource
プロパティを設定するか、 SplitButton
...
しかし、 Items
と ItemsSource
の両方のプロパティは ItemsControl
に由来するようです。これは SplitButton
はすでに Button
から派生しています。だから私は何をすべきかわからない...何かアイデア?
解決
継承ルートを使用する場合は、代わりにHeaderedItemsControlから派生する必要があります。デフォルトのControlTemplateは、ヘッダーのコンテンツをボタンのコンテンツとして配置します。
その結果、Items / ItemsSourceも取得します。開発する必要があるのはControlTemplateだけです。
最後に、メニュー部分をContextMenuではなくPopupとして実装することを検討してください。 ContextMenuは、目的固有のUI要素です(通常、右クリックで表示されます)。詳細については、aero.normalcolor.xamlのComboBoxのデフォルトのControlTemplateを参照してください。