使用棱镜显示标签的标题

时间:2009-04-07 15:41:27

标签: c# wpf

我正在使用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}

1 个答案:

答案 0 :(得分:0)

您无法将DataTemplate与界面相关联。它必须与类型直接关联。如果要通过接口进行关联,可以考虑实施DataTemplateSelector来检查项目是否实现IView并相应地返回DataTemplate