模板中的MVVM绑定问题(特别是Expander控件的HeaderTemplate)

问题描述 投票:1回答:1

好吧,我有一个名为GeneralVocabItemTemplateInput的数据模板。它是一个扩展器控件。

数据模板链接到视图模型,因此可以绑定各种项目。实际上我可以绑定扩展器的头文本,如下所示:

<DataTemplate x:Key="GeneralVocabItemTemplateInput">
            <Grid Margin="2">
                <Expander Header="{Binding ID}">

这很好。标题文本显示ID值。关键是扩展器的数据上下文是我想要的视图模型。

到目前为止都很好。现在而不是ID作为文本,我想要一个模板,所以我可以有更多的自定义。我创建了一个数据模板,我可以将其分配给expandder的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
1个回答
1
投票

它在我身边有以下变化:

<Expander HeaderTemplate="{StaticResource TemplateTest}" Header="{Binding}">

说明:DataContext中的HeaderTemplate设置为Header本身(这似乎是合理的)。当没有设置Header时,DataContext因此是null

© www.soinside.com 2019 - 2024. All rights reserved.