TextBlock可见性取决于所选的TabItem-需要触发器吗?

时间:2019-06-20 17:27:27

标签: wpf xaml visibility

我创建了一个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。

0 个答案:

没有答案