2009-09-09 7 views
1

Je travaille sur un contrôle basé sur un modèle Silverlight (c'est-à-dire qu'il dérive de Control et a son apparence implémentée en tant que ControlTemplate dans generic.xaml) et a rencontré le besoin d'un ValueConverter dans l'une de mes liaisons. Normalement je créerais juste une instance de ValueConverter dans les ressources du contrôle mais je n'arrive pas à comprendre comment faire ça avec un ControlTemplate. Je voudrais conserver cette implémentation dans Xaml si possible, mais je suppose que je pourrais remplacer OnApplyTemplate et créer manuellement la liaison avec un convertisseur.Est-il possible d'inclure des ressources Xaml dans un ControlTemplate?

Répondre

3

Cela fonctionne dans Silverlight 3. Il vous suffit d'ajouter une section de ressources à l'intérieur de votre modèle de contrôle, et ajoutez 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, ValueConverters sont souvent mal utilisés dans des modèles de contrôle. Vous pouvez utiliser un TypeConverter à la place. Bryant Likes a écrit un bon article sur the difference between ValueConverter and TypeConverter in this scenario.

Questions connexes