2010-03-22 4 views
3

Je dois utiliser la réflexion pour obtenir la valeur de liaison dans un contrôle DataGridTemplateColumn (par exemple, HyperLinkButton). Est-ce que quelqu'un sait comment je pourrais faire cela?Comment utiliser la réflexion pour obtenir l'expressionBindingExpression (et la valeur) pour les contrôles ayant une propriété ContentProperty dans Silverlight

Il semble assez simple de le faire avec un TextBlock parce qu'il a une propriété de dépendance TextProperty, mais je ne peux pas sembler obtenir une expression de liaison d'un contrôle qui ne dispose pas d'un TextProperty immédiat. Voici le code que je utilise pour acquérir l'expression de liaison pour une TextBlock:

FrameworkElement fe = (FrameworkElement)dependencyObj; 
FieldInfo fi = fe.GetType().GetField("TextProperty"); 
BindingExpression bindingExpression = fe.GetBindingExpression((DependencyProperty)fi.GetValue(null)) 

Cependant, le code suivant ne fonctionne jamais pour un objet de dépendance qui est un HyperLinkButton:

FieldInfo fi = fe.GetType().GetField("ContentProperty"); 

Est-ce que quelqu'un sait comment je pourrais être en mesure d'obtenir le (et la valeur de liaison) pour le contenu d'un HyperLinkButton?

Répondre

2

Avez-vous essayé d'ajouter les indicateurs de liaison corrects pour ce champ? Cela ressemble à un cas de drapeaux de liaison inadaquate lors de l'utilisation de la réflexion. TextBlock possède un champ Texte statique à droite sur TextBlock, alors que HyperlinkButton a un contenu hérité de ContentControl.

Essayez d'utiliser les drapeaux & publics liant & FlattenedHierarchy statique:

FieldInfo fi = fe.GetType().GetField("ContentProperty", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy); 

ajouter le drapeau de liaison réflexion FlattenHierarchy devrait dire la réflexion pour rechercher dans la hiérarchie des classes pour trouver ce champ statique public.

+0

Salut Justin, Merci pour votre aide. Avec l'ajout de ces drapeaux enum, j'ai été en mesure de résoudre le problème. – sfx

Questions connexes