2017-08-30 9 views
-2

SplitButton par défaut fonctionne bien, mais lorsque j'essaie de travailler avec son modèle de contrôle, des problèmes surgissent. Si j'essaie d'obtenir le modèle de contrôle avec réflexion (avec ConstructorInfo), je reçois un modèle de contrôle vide pour SplitButton. Si j'essaie de 'Modifier la copie du modèle' dans XAML Designer, j'obtiens une copie qui ne fonctionne pas (comme ItemsSource ne lie pas aux éléments dans ListBox de SplitButton car il est toujours vide). Ma version de MahApps Metro est 1.4.3.0MahApps: Modèle de contrôle Metro SplitButton

Voici comment j'essaie d'obtenir le contrôle de modèle SplitButton:

MahApps.Metro.Controls.SplitButton ctl = sender as MahApps.Metro.Controls.SplitButton; 

Type type = ctl.GetType(); 

if (type == null) 
    return; 

// Instantiate the type. 
ConstructorInfo info = type.GetConstructor(System.Type.EmptyTypes); 
Control control = (Control)info.Invoke(null); 

// Get the template. 
ControlTemplate template = control.Template; 

// Get the XAML for the template. 
XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Indent = true; 
StringBuilder sb = new StringBuilder(); 
XmlWriter writer = XmlWriter.Create(sb, settings); 
XamlWriter.Save(template, writer); 

Répondre

1

La valeur par défaut ControlTemplate est disponible sur GitHub: https://github.com/MahApps/MahApps.Metro/blob/336f7dfc4bda2d0eba8aa270737ca3c11d45128c/src/MahApps.Metro/MahApps.Metro/Themes/SplitButton.xaml

MahApps.Metro est open source donc vous pouvez télécharger le code source si vous le souhaitez.

+0

Merci pour info, mais je l'ai déjà obtenu la même source d'une application de démonstration MahApps (ButtonsExample). Cependant le problème que j'ai eu avec ce modèle de contrôle est qu'il ne reconnaît pas ClipBorder comme référence disponible (peut-être en raison de la version 1.4.3.0?) – VladacusB

+0

Alors pourquoi ne pas remplacer le ClipBorder par une bordure? – mm8

+0

... et pourquoi ne votez-vous pas des réponses utiles au lieu de fournir votre propre réponse? Bien sûr, le modèle par défaut fonctionne. – mm8

0

Après la mise à jour MahApps Metro à 1.5.0 SplitButton fonctionne très bien avec des modèles de contrôle fourni ...

+0

Le modèle par défaut fonctionne très bien même dans la version 1.4.3 – jsanalytics