¿Crear un control personalizado que sea un botón que también tenga Items y ItemsSource?
-
06-07-2019 - |
Pregunta
Estoy tratando de crear un control SplitButton
que usa un ContextMenu
para mostrar sus elementos. El SplitButton
se deriva actualmente del Button
. Tengo un PART_DropDownInitiator
que es el pequeño icono en el que el usuario hace clic para que aparezca el ContextMenu
para el SplitButton
para mostrar sus elementos.
El problema es que estoy tratando de configurar un ContextMenu
predeterminado dentro del SplitButton
' Template
o estilo, de esta manera el El usuario del control no tiene que hacerlo por sí mismo. Al principio pensé que el usuario simplemente establecería la propiedad SplitButton.ContextMenu.Items
en xaml, pero eso no parece ser posible. Ahora me gustaría agregar un Elementos
y ItemsSource
propiedades al SplitButton
que el ContextMenu
dentro del Items
o ItemsSource
en xaml o code-behind en el SplitButton
...
Pero, las propiedades Items
y ItemsSource
parecen originarse en ItemsControl
, lo cual es un problema porque el SplitButton
ya se deriva del Button
. Así que no estoy seguro de qué hacer ... ¿Alguna idea?
Solución
Si va por la ruta de herencia, debe derivar de HeaderedItemsControl en su lugar, donde su ControlTemplate predeterminado coloca el contenido del Encabezado como el contenido de un Botón.
Como resultado, también obtienes Items / ItemsSource: lo único que tienes que desarrollar es tu ControlTemplate.
Por último, considere implementar la parte del menú como una ventana emergente en lugar de un menú contextual. Los ContextMenu son un elemento de interfaz de usuario específico para un propósito (y generalmente aparecen con un clic derecho). Para obtener más información, consulte el ControlTemplate predeterminado de ComboBox en aero.normalcolor.xaml.