Question

Je travaille sur un contrôle basé sur un modèle Silverlight (c’est-à-dire qu’il dérive de Control et que son apparence est implémentée en tant que ControlTemplate dans generic.xaml) et j’ai eu besoin d’un ValueConverter dans l’une de mes liaisons. Normalement, je créerais simplement une instance de ValueConverter dans les ressources du contrôle mais je ne sais pas comment faire avec un ControlTemplate. Si possible, j'aimerais conserver cette implémentation dans Xaml, mais je suppose que je pourrais remplacer OnApplyTemplate et créer manuellement la liaison à l'aide d'un convertisseur.

Était-ce utile?

La solution

Cela fonctionne dans Silverlight 3. Il vous suffit d'ajouter une section de ressources dans votre modèle de contrôle et d'ajouter le ValueConverter aux ressources du modèle:

<ControlTemplate TargetType="controls:MyControl">
    <Grid Margin="8,40,8,20" x:Name="peopleListContainer">        
        <Grid.Resources>
            <controls:MyValueConverter x:Key="converter" />
        </Grid.Resources>
        <!-- ....

Cependant, les convertisseurs de valeur sont souvent mal utilisés dans les modèles de contrôle. Vous voudrez peut-être utiliser un TypeConverter à la place. Bryant Likes a écrit un bon article sur la différence entre ValueConverter et TypeConverter dans ce scénario .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top