【发布时间】:2023-04-05 14:38:01
【问题描述】:
我正在构建一个 Silverlight 控件,并尝试通过它们各自的 DataTemplates 为 Header 和 Body ContentControls 设置绑定。我不知道为什么,但这不起作用(静默失败)。我唯一的猜测是这是因为 DataTemplates 是 StaticResources。任何人都可以提供建议吗?该控件具有以下默认模板:
<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 并且它可以工作。
标签: silverlight data-binding datatemplate