2010-06-15 5 views
5

Je tente d'écrire un MarkupExtension personnalisé pour faciliter ma vie en me donnant une meilleure façon de spécifier des liaisons en XAML. Cependant, je voudrais savoir si je peux accéder à l'objet qui représente le fichier MarkupExtension.Accéder à "current class" à partir de WPF custom MarkupExtension

En d'autres termes, supposons que j'ai un UserControl qui définit un rendu particulier d'un modèle de données de mon programme. Ce contrôle a beaucoup de choses visuelles comme les grilles, les bordures et la disposition générale. Si j'utilise mon MarkupExtension sur une propriété particulière d'un élément de ce UserControl, je veux accéder à l'instance du UserControl, sans savoir de quel type il s'agit (je prévois d'utiliser la réflexion).

Est-ce possible?

Répondre

11

Dans .NET 4.0, ils ont ajouté la capacité IRootObjectProvider, mais malheureusement, ce n'est pas possible dans les versions précédentes. Si vous êtes dans .NET 4.0, vous pouvez effectuer les opérations suivantes:

public override object ProvideValue(IServiceProvider serviceProvider) 
{ 
    var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider; 
    var root = rootObjectProvider.RootObject; 
    // do whatever you need to do here 
} 
+0

I * am * avec .NET 4! Lemme l'essayer. :) – devios1

+0

Fonctionne parfaitement! Merci! – devios1

+0

Pas d'autre moyen pour nous, coincé dans 3.5 ?! : (((((((((( –

Questions connexes