2011-08-05 4 views
0

J'ai un ListBox qui doit afficher une combinaison checkbox/textblock pour chaque élément. Les éléments ne sont cependant pas dans une collection mais sont exposés en tant que propriétés (boolean/String) dans une classe. Ce qui signifie que je ne peux pas définir la propriété Binding dans le DataTemplate pour l'élément, puisque chaque élément sera lié à une propriété différente.Réutilisation de WPF DataTemplate

Est-il possible de définir un DataTemplate qui n'est lié à aucune propriété, puis de définir la liaison lors de l'utilisation de DataTemplate.

En pseudocode:

<DataTemplate x:Key="ReusableDataTemplate"> 
    <StackPanel Orientation="Horizontal"> 
     <CheckBox /> 
     <TextBlock /> 
    </StackPanel> 
</DataTemplate> 

Et plus tard l'utiliser comme:

<ListBox> 
    <ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable1}" TextBlockBinding="{Path=Enable1Text}"/> 
    <ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable2}" 
TextBlockBinding="{Path=Enable2Text}"/> 
    <ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable3}" TextBlockBinding="{Path=Enable3Text}"/> 
</ListBox> 

Répondre

5

C'est ce que UserControls sont pour.