私はSilverlightコントロールを構築していますが、HeaderおよびBody ContentControlのバインドを、それぞれのDataTemplatesを使用して設定しようとしています。理由は分かりませんが、これはうまくいきません(静かに失敗します)。私の唯一の推測は、DataTemplatesがStaticResourcesであるためです。誰でもアドバイスを提供できますか?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>
ありがとう:コントロールには、次のデフォルトのテンプレートを持っています!
更新
実際には、次のコードは、いずれかの動作しませんので、StaticResourcesについての私の仮定が間違っているかもしれません。
<ContentControl x:Name="Header">
<ContentControl.ContentTemplate>
<DataTemplate x:Key="DefaultHeaderTemplate">
<StackPanel>
<TextBlock Text="{Binding HeaderText}" FontSize="15" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
コントロールのDataContextはどこかに設定されていますか?バインドするデータに「HeaderText」および「BodyText」プロパティがありますか? –
はい、私はこれが本当であると確信しています。私はContentControlを に置き換えることができます。 –