我试图在标题的datatemplate中绑定到RibbonTab父级,如下所示:
<ribbon:RibbonTab.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ribbon:RibbonTab}}}" Margin="2"/>
</StackPanel>
</DataTemplate>
</ribbon:RibbonTab.HeaderTemplate>
我想达到ribbontab后面的viewmodelname将显示在文本块中的程度。一旦名称弹出,我知道如何获得viewmodel的属性。但是如果viewmodelname没有显示我怀疑绑定不正常。
我该怎么做?以上情况显然不起作用。
答案 0 :(得分:1)
在ribbonTab上设置x:Name
并使用ElementName
绑定它。这应该有效:
<ribbon:RibbonTab x:Name="MyTab">
<ribbon:RibbonTab.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=DataContext, ElementName=MyTab}"/>
</StackPanel>
</DataTemplate>
</ribbon:RibbonTab.HeaderTemplate>
</ribbon:RibbonTab>
RelativeSource不起作用,因为RibbonTab与HeaderTemplate不在同一个VisualTree中。
此外,您可以使用x:Reference
使其正常工作。
<ribbon:RibbonTab x:Name="MyTab">
<ribbon:RibbonTab.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=DataContext, Source={x:Reference MyTab}}"/>
</StackPanel>
</DataTemplate>
</ribbon:RibbonTab.HeaderTemplate>
</ribbon:RibbonTab>