WPF RibbonTab绑定到Ribbon的DataContext

时间:2016-03-26 11:08:43

标签: wpf xaml data-binding

我试图在标题的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没有显示我怀疑绑定不正常。

我该怎么做?以上情况显然不起作用。

1 个答案:

答案 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>