2009-06-17 5 views
1

J'essaie de créer un contrôle SplitButton qui utilise un ContextMenu pour afficher ses éléments. Le SplitButton dérive actuellement de Button. J'ai un PART_DropDownInitiator qui est la petite icône sur laquelle l'utilisateur clique pour afficher le ContextMenu pour le SplitButton pour afficher ses éléments.Création d'un contrôle personnalisé qui est un bouton qui a également un Items et ItemsSource?

Le problème est que je suis en train d'installer un défaut ContextMenu intérieur de Template ou le style de la SplitButton, ainsi l'utilisateur du contrôle ne doit pas faire eux-mêmes. Au début, je me suis dit que l'utilisateur devait simplement définir la propriété SplitButton.ContextMenu.Items dans xaml, mais cela ne semble pas possible. Maintenant, je voudrais ajouter une Items et ItemsSource propriétés au SplitButton que le ContextMenu dans le modèle de SplitButton peut lier à elle. Et l'utilisateur doit pas seulement avoir à régler la Items ou ItemsSource propriété en XAML ou code-behind sur le SplitButton ...

Mais, à la fois la Items et ItemsSource propriétés semblent provenir de ItemsControl, ce qui est un problème parce que le SplitButton dérive déjà de Button. Donc je ne sais pas quoi faire ... Des idées?

Répondre

1

Si vous allez sur la route de l'héritage, vous devriez dériver de HeaderedItemsControl à la place, où votre ControlTemplate par défaut place le contenu de l'en-tête comme le contenu d'un bouton. En conséquence, vous obtenez également Items/ItemsSource - la seule chose que vous devez développer est votre ControlTemplate. Enfin, pensez à implémenter la partie de menu en tant que Popup au lieu d'un ContextMenu. ContextMenu est un élément d'interface utilisateur spécifique à un objet (et généralement mis en place avec un clic droit). Pour plus d'informations, consultez le ControlTemplate par défaut de ComboBox dans aero.normalcolor.xaml.

Questions connexes