Criando um controle personalizado que é um botão que também tem uma Items e ItemsSource?
-
06-07-2019 - |
Pergunta
Eu estou tentando criar um controle SplitButton
que usa um ContextMenu
para exibir seus itens. O SplitButton
está atualmente decorrente Button
. Eu tenho um PART_DropDownInitiator
que é o pequeno ícone que o usuário clica em para abrir o ContextMenu
para o SplitButton
para mostrar seus itens.
O problema é que eu estou tentando configurar um dentro ContextMenu
padrão de SplitButton
ou o estilo do Template
, desta forma o usuário do controle não tem que fazer por si próprios. No começo eu percebi que eu tinha acabado de ter o usuário apenas definir a propriedade SplitButton.ContextMenu.Items
em XAML, mas que não parece ser possível. Agora eu gostaria de adicionar um Items
e ItemsSource
propriedades para o SplitButton
que o ContextMenu
dentro do template do SplitButton
pode ligar a ele. E o usuário deve que apenas tem que definir o Items
ou propriedade ItemsSource
em XAML ou código-behind no SplitButton
...
Mas, tanto o Items
e propriedades ItemsSource
parecem se originar de ItemsControl
, que é um problema porque o SplitButton
já é decorrente Button
. Então, eu estou sem saber o que fazer ... Alguma idéia?
Solução
Se você vai a rota de herança, você deve derivar de HeaderedItemsControl em vez disso, onde seus padrão ControlTemplate coloca o conteúdo do cabeçalho como o conteúdo de um botão.
Como resultado, você também terá Items / ItemsSource -. A única coisa que você tem que desenvolver é o seu ControlTemplate
Por fim, considere implementar a parte de menu como um Popup em vez de um ContextMenu. do ContextMenu são um elemento UI de propósito específico (e geralmente criado com um clique com o botão direito). Para mais informações, consulte o ControlTemplate padrão de ComboBox em aero.normalcolor.xaml.