好的,所以我有一个名为GeneralVocabItemTemplateInput的数据模板。在其中是扩展器控件。
数据模板链接到视图模型,因此可以绑定各种项目。实际上,我可以按如下所示绑定扩展器的标题文本:
<DataTemplate x:Key="GeneralVocabItemTemplateInput">
<Grid Margin="2">
<Expander Header="{Binding ID}">
那很好。标题文本显示ID值。关键是扩展器的数据上下文就是我想要的视图模型。
到目前为止一切都很好。现在,我要使用模板而不是ID作为文本,这样我可以进行更多自定义。我创建了一个数据模板,可以将其分配给扩展器的HeaderTemplate属性。因此,我在资源字典中创建了一个如下所示的文件:
<DataTemplate x:Key="TemplateTest">
<StackPanel>
<Border BorderThickness="1" BorderBrush="Black">
<TextBlock Margin="2" Text="{Binding ID}"/>
</Border>
</StackPanel>
</DataTemplate>
非常简单,它设置了边界以及与之前相同的边界值。
我在扩展器中使用它的方式如下:
<DataTemplate x:Key="GeneralVocabItemTemplateInput">
<Grid Margin="2">
<Expander HeaderTemplate="{StaticResource TemplateTest}">
这是我遇到的问题。出现黑色边框,但是里面什么也没有。
显然,模板可以工作,并且可以在边框出现后找到,但是绑定没有。我已经玩了一段时间,还没有提出解决方案。
我尝试做的一件事是更改TemplateTest的存储位置(数据模板)。它在一个单独的资源字典文件中,因此我将其移至与原始模板(GeneralVocabItemTemplateInput)相同的文件中,以查看是否有所作为。没什么。
我希望有人能对此有所启发。
答案 0 :(得分:1)
它在我的身边进行了以下更改:
<Expander HeaderTemplate="{StaticResource TemplateTest}" Header="{Binding}">
说明:DataContext
中的HeaderTemplate
设置为Header
本身(这似乎是合理的)。如果未设置Header
,则DataContext为null
。