我创建了一个TabControl,其Header的内容是两个TextBlocks:一个用名称标记Header,另一个显示符号字体。根据所选的TabItem,我希望在折叠时在第一个TextBlock中显示Header文本,一旦选择了另一个TabItem(因此将显示当前选择的TabItem的Header文本)。
例如:选择TabItem1将显示带有标题文本的TextBlock1,TextBlock2显示符号字体。选择TabItem2将折叠TextBlock1的可见性,因此将“折叠的TabItem2”窗体的第一个TextBlock的可见性设置为“可见”。
我想尝试一个xaml解决方案;使用代码,我可以实现所需的功能。 我想我需要一些触发器,但是显然我对xaml经验不足,无法正确实现它们。
这是我到目前为止所得到的。请注意,我的代码确实第一次显示了预期的行为,但是TextBlock的可见性始终设置为“折叠”。这是我的代码:
<TabItem x:Name="Item2" GotFocus="Item2_GotFocus" LostFocus="Item2_LostFocus">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Text2" FontSize="14" FontFamily="Quicksand" VerticalAlignment="Center" Content="TestEntry">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Item2, Path=IsFocused}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Margin="20,0,0,0" FontSize="32" FontFamily="APPFONT" VerticalAlignment="Center">B</TextBlock>
</StackPanel>
</TabItem.Header>
</TabItem>
通过启动应用程序,我可以看到两个TextBlocks;一旦选择了另一个TabItem,第一个TextBlock的可见性将设置为折叠。再次单击此TabItem不会再次显示第一个TextBlock。