【发布时间】:2016-09-14 22:17:25
【问题描述】:
我正在使用 DataBinding 来显示 ItemsSource 中的所有控件
<TabControl Grid.Row="1" TabStripPlacement="Left" ItemsSource="{Binding Source={StaticResource WorkflowSelector}, Path=Workflows}" SelectedIndex="0">
<TabControl.ItemTemplate>
<DataTemplate>
<Label Content="{Binding PluginName}"></Label>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
WorkflowSelector 是我的 ViewModel,其中包含应在 TabControl 中显示的所有控件的列表。
我创建了一个 itemTemplate 来在选项卡中显示 PluginName(公共属性) 但什么都没有显示。
如果我检查可视化树,我可以看到 Tabcontrol 的数据绑定,其中包含 1 个具有属性插件名称的项目。 Label 的 BindingExpression 的评估值为空
我注意到的第一件事是 ContentPresenter 没有 DataContext,而 Border 确实有正确的 DataContext
另外...如果我将 ItemTemplate 更改为 ContentTemplate,则绑定工作正常(但内容不在标题中)
【问题讨论】:
-
您想更改
Header的TabITem还是TabItem本身? -
我要更改标题
-
我不知道为什么你的代码不起作用,我认为它应该和this answer 显示非常相似的代码,我认为它是有效的。最好的猜测是您应用了某种自定义样式,或者可能是干扰的隐式 DataTemplate。您可以将相关部分复制/粘贴到新项目中进行测试吗?
标签: c# wpf data-binding datatemplate tabcontrol