Je suis en train de créer un contrôle Silverlight et j'essaie de configurer des liaisons pour les ContentControls d'en-tête et de corps via leurs DataTemplates respectifs. Je ne sais pas pourquoi, mais cela ne fonctionne pas (échoue silencieusement). Ma seule supposition est que c'est parce que les DataTemplates sont des StaticResources. Quelqu'un peut-il offrir des conseils? Le contrôle a le modèle par défaut suivant:Liaison depuis un DataTemplate?
<Style TargetType="local:LayoutItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:LayoutItem">
<StackPanel>
<StackPanel.Resources>
<DataTemplate x:Key="DefaultHeaderTemplate">
<StackPanel>
<TextBlock Text="{Binding HeaderText}" FontSize="15"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="DefaultBodyTemplate">
<StackPanel>
<TextBlock Text="{Binding BodyText}" FontSize="12"/>
</StackPanel>
</DataTemplate>
</StackPanel.Resources>
<ContentControl x:Name="Header"
ContentTemplate="{StaticResource DefaultHeaderTemplate}" />
<ContentControl x:Name="Body"
ContentTemplate="{StaticResource DefaultBodyTemplate}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
Merci!
Mise à jour
En fait, le code suivant ne fonctionne pas non plus, donc mon hypothèse sur les StaticResources peut-être tort.
<ContentControl x:Name="Header">
<ContentControl.ContentTemplate>
<DataTemplate x:Key="DefaultHeaderTemplate">
<StackPanel>
<TextBlock Text="{Binding HeaderText}" FontSize="15" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
Le DataContext du contrôle est défini quelque part. Les données que vous liez ont-elles la propriété "HeaderText" et "BodyText"? –
Oui, je suis assez certain que c'est vrai. Pour preuve, je peux remplacer ContentControl par et cela fonctionne. –