我有一个TabControl,其中有一个带有ContentControl的TabItem。此ContentControl应用于datatemplate。代码在这里:
<TabControl x:Name="tabControl1" Tag="Giving URI here works">
<TabItem x:Name="tabItem1" Tag="Giving URI here doesnt work">
<ContentControl ContentTemplate="{StaticResource myOptionsDataTemplate}">
<StackPanel>
<TextBlock Text="Some Text" />
</StackPanel>
</ContentControl>
</TabItem>
</TabControl>
数据模板是:
<DataTemplate x:Key="myOptionsDataTemplate">
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DockPanel LastChildFill="True">
<Image Source="{Binding Path=Tag, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TabItem}}}"
Width="32" Height="32"
HorizontalAlignment="Left"
VerticalAlignment="Top"
DockPanel.Dock="Left"
Margin="0,0,4,0"/>
<Label Content="Some Text"
/>
</DockPanel>
<ContentControl Grid.Row="2" Content="{TemplateBinding ContentControl.Content}"/>
</Grid>
</Border>
</DataTemplate>
请注意,datatemplate中的Image Source是TabItem的Tag。这不起作用。但是如果我改变Source来获取TabControl的标签就行了。
使用TabItem标签的任何原因都不起作用?
答案 0 :(得分:4)
如果您使用类似Snoop的内容来查看实际的Visual Tree,我们会看到TabControl的Header和Content位于不同的区域,而TabItem只存在于Header区域,而不是Content区域。 “内容”区域仅保留当前的SelectedItem。