Creazione di un controllo personalizzato che è un pulsante che ha anche un elemento e una risorsa articoli?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Sto cercando di creare un controllo SplitButton che utilizza un ContextMenu per visualizzare i suoi elementi. Il SplitButton deriva attualmente dal Button . Ho un PART_DropDownInitiator che è la piccola icona su cui l'utente fa clic per visualizzare il ContextMenu per il SplitButton per mostrare i suoi elementi.

Il problema è che sto provando a impostare un ContextMenu predefinito all'interno dello TemplateButton o dello stile Template , in questo modo il l'utente del controllo non deve farlo da solo. All'inizio ho pensato che avrei semplicemente impostato l'utente SplitButton.ContextMenu.Items in xaml, ma ciò non sembra essere possibile. Ora vorrei aggiungere un Items e ItemsSource al SplitButton che il ContextMenu all'interno del Il modello SplitButton può essere associato ad esso. E l'utente dovrebbe semplicemente impostare la proprietà Items o ItemsSource in xaml o code-behind su SplitButton ...

Tuttavia, entrambe le proprietà Items e ItemsSource sembrano provenire da ItemsControl , il che è un problema perché SplitButton deriva già dal Button . Quindi non sono sicuro di cosa fare ... Qualche idea?

È stato utile?

Soluzione

Se stai seguendo la strada dell'ereditarietà, dovresti invece derivare da HeaderedItemsControl, dove ControlTemplate predefinito inserisce il contenuto dell'intestazione come contenuto di un pulsante.

Di conseguenza, ottieni anche Items / ItemsSource: l'unica cosa che devi sviluppare è ControlTemplate.

Infine, considera di implementare la porzione di menu come Popup anziché come ContextMenu. I menu contestuali sono un elemento dell'interfaccia utente specifico per lo scopo (e generalmente vengono visualizzati con un clic con il pulsante destro del mouse). Per ulteriori informazioni, consultare il ControlTemplate predefinito di ComboBox in aero.normalcolor.xaml.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top