2010-09-16 5 views
1

La version actuelle du contrôle PivotViewer de Microsoft Live Labs pour SilverLight 4 n'a aucun moyen de styler les éléments du contrôle. En regardant le contrôle dans Reflector, je peux voir qu'une grande partie de l'info de style est définie dans un ResourceDictionary dans l'assembly (assets/defaultcolors.xaml). Ce que je voudrais faire est de créer ma propre copie de ce fichier, puis le remplacer à l'exécution sur le contrôle PivotViewer. En sous-classant le contrôle PivotViewer et en remplaçant OnApplyTemplate, je peux saisir les éléments enfants et définir des propriétés telles que l'arrière-plan en fonction de la classeComment remplacer un ResourceDictionary d'un UserControl tiers (dans ce cas PivotViewer)

Je n'ai pas eu de succès Clear() 'ng les MergedDictionaries et en ajoutant mon propre:

public override void OnApplyTemplate() { 
base.OnApplyTemplate(); 

/* can change things this way */ 
CollectionViewerView cvv = ((CollectionViewerView)((Grid)this.GetTemplateChild("PART_Container")).Children[0]); 
((Grid)cvv.Content).Background = new SolidColorBrush(Colors.Black); 

/* can't change things this way */ 
CustomDictionary gd = new CustomDictionary(); 
cvv.Resources.MergedDictionaries.Clear(); 
cvv.Resources.MergedDictionaries.Add(gd); 

}

Répondre

0

Je crains que cela ne va pas travailler dans Silverlight car il utilise uniquement les ressources statiques . (Styles Don't Update)

La modification d'un dictionnaire de ressources ne fonctionne que lorsque InitializeComponent() est appelé, appelé dans le constructeur de PivotViewer.

J'ai également essayé de styler le contrôle PivotViewer. J'espère qu'il y a un autre moyen, en plus de chercher dans l'arbre visuel et de changer les propriétés.

+0

Merci - marquant cela comme la réponse. Il est temps de repenser l'approche. L'arborescence visuelle est assez désagréable pour PivotViewer, essayant de la styliser, ce serait de la folie! – ViNull

Questions connexes