Comment utiliser un modèle de liaison à l'intérieur du modèle de données dans un contrôle personnalisé (Silverlight)

Je suis en train de créer un contrôle qui va prendre ItemsSource et InnerTemplate et affichera tous les articles emballés dans CheckBoxes.

Le contrôle a 2 propriétés de dépendance:

public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(CheckBoxWrapperList), null);
public static readonly DependencyProperty InnerTemplateProperty = DependencyProperty.Register("InnerTemplate", typeof(DataTemplate), typeof(CheckBoxWrapperList), null);

et voici le modèle:

<ControlTemplate TargetType="local:CheckBoxWrapperList">
    <Grid>
        <Grid.Resources>
            <DataTemplate x:Key="wrapper">
                <CheckBox>
                    <ContentPresenter ContentTemplate="{TemplateBinding InnerTemplate}" Content="{Binding}" />
                </CheckBox>
            </DataTemplate>
        </Grid.Resources>
        <ItemsControl ItemTemplate="{StaticResource wrapper}" ItemsSource="{TemplateBinding ItemsSource}" />
    </Grid>
</ControlTemplate>

Cependant, cette approche ne fonctionne pas.
La liaison dans le ControlPresenter.ContentTemplate à l'aide de TemplateBinding ne fonctionne pas.
Cependant, lorsque je n'utilise pas la liaison de modèle de référence et le modèle en tant que ressource statique, alors qu'il fonctionne comme prévu.

  • Pourquoi ne puis-je pas utiliser le modèle de liaison à l'intérieur du contenu de l'animateur dans datatemplate?
  • Ce qui me manque ici? Spécial balisage nécessaire?
  • Est-il un moyen pour obtenir le comportement attendu?

Merci d'avance.

Avez-vous compris cela? J'ai le même problème.

OriginalL'auteur stefando | 2011-01-08