Criando um controle personalizado que é um botão que também tem uma Items e ItemsSource?

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

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top