我正在使用Prism并且有一个TabControl区域。我将TabControl.ItemTemplate上的DataTemplate设置为IView类型的接口。 IView有一个标题和描述字符串。当我使用IView调用RegisterViewWithRegion时,会添加选项卡,但标题上不会显示任何描述。我可以不绑定到接口上的属性,还是我错过了其他内容?
manager.AddToRegion(“ContentZone”,新的PrimaryView()); //实现IView
<TabControl x:Name="ContentZone" cal:RegionManager.RegionName="ContentZone" Grid.Row="1" umn="0">
<TabControl.ItemTemplate>
<DataTemplate DataType="{x:Type oasis:IView}">
<DockPanel ToolTip="{Binding Path=Description}">
<Label Padding="0"
Content="{Binding Path=Title}"
VerticalAlignment="Center" />
编辑:我找到了一个解决方案,虽然我发现它并不是那么好。出于某种原因,无论我做什么,DataTemplate的DataContext总是以null返回,我尝试了DataTempalteSelector,但是项目本身也是null。我尝试改为基础抽象类,但也没有做到。所以这就是我最终为绑定本身所做的:
{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ContentControl}}, Path=DataContext.Title}
答案 0 :(得分:0)
您无法将DataTemplate
与界面相关联。它必须与类型直接关联。如果要通过接口进行关联,可以考虑实施DataTemplateSelector
来检查项目是否实现IView
并相应地返回DataTemplate
。