WPF 绑定到 TabControl 的选定 TabItem 内的 TextBlock 的文本 属性

WPF Binding to Text property Of a TextBlock inside Selected TabItem of a TabControl

我知道通常我们可以使用此代码绑定 Selected Tab Header Text 并显示选定的选项卡:

<TabControl Name="MyTabControl">
    <TabItem Header="Tab1"/>
    <TabItem Header="Tab2" />
</TabControl>

<Lable Content="{Binding ElementName=MyTabControl, Path=SelectedItem.Header}"/>

但是当我有这些代码时如何绑定:

<TabControl Name="MyTabControl">
    <TabItem>
         <TabItem.Header>
              <StackPanel Orientation="Horizontal">
                  <Image Source="/Images/a.png" />
                  <TextBlock Text="Tab1" />
              </StackPanel>
         </TabItem.Header>
    </TabItem>

    <TabItem>
         <TabItem.Header>
              <StackPanel Orientation="Horizontal">
                  <Image Source="/Images/b.png" />
                  <TextBlock Text="Tab2" />
              </StackPanel>
         </TabItem.Header>
    </TabItem>

<Lable Content="{Binding ??????????? "/>

您可以使用 HeaderTemplate,而不是将直接内容分配给 header。 参考下面的代码。

 <TabControl Name="MyTabControl">
        <TabItem Header="Tab1">
            <TabItem.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="/Images/a.png" />
                        <TextBlock Text="{Binding}"/>
                    </StackPanel>
                </DataTemplate>
            </TabItem.HeaderTemplate>
        </TabItem>

        <TabItem Header="Tab2">
            <TabItem.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="/Images/b.png" />
                        <TextBlock Text="{Binding}"/>
                    </StackPanel>
                </DataTemplate>                   
            </TabItem.HeaderTemplate>
        </TabItem>
    </TabControl>
    <Label Content="{Binding ElementName=MyTabControl, Path=SelectedItem.Header}"/>