ItemsおよびItemsSourceも持つボタンであるカスタムコントロールを作成しますか?

StackOverflow https://stackoverflow.com/questions/1007958

  •  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を参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top