【发布时间】:2019-07-08 08:54:03
【问题描述】:
好的,所以我有一个名为 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) 相同的文件中,看看这是否有所不同。没有区别。
我希望有人能对此有所了解。
【问题讨论】:
标签: c# mvvm binding datatemplate expander