gpt4 book ai didi

WPF:标签导航因折叠超链接而中断

转载 作者:行者123 更新时间:2023-12-04 10:44:12 25 4
gpt4 key购买 nike

问题:使用 TAB 键的导航在折叠的 TextBlock/超链接处停止。

转载:

<Window x:Class="TabTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Width="200" Height="200">

<Grid>
<StackPanel Orientation="Vertical">
<TextBox Text="before" />
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TextBlock.Style>
<Hyperlink Focusable="False">
<TextBlock Text="test" />
</Hyperlink>
</TextBlock>
<TextBox Text="after" />
</StackPanel>
</Grid>
</Window>

如果您运行这个 super 简单的演示并按 TAB,光标将移动到“之前”的 TextBox。再次按 TAB 不会……什么都没有。光标停留在“之前”文本框,永远不会到达“之后”文本框。当超链接的 TextBlock 可见时,导航按预期工作。

问题:如何在 HyperLink 折叠的情况下使 TAB 导航正常工作?

最佳答案

问题不在于超链接,而在于 TextBlock 中的嵌套控件。你可以把它改成

<TextBlock Visibility="Collapsed">               
<TextBlock Text="MyText" />
</TextBlock>

并且标签导航仍然会被破坏。

解决方法是使用 KeyboardNavigation.TabNavigation="Once"在外部 TextBlock:
<TextBlock KeyboardNavigation.TabNavigation="Once">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TextBlock.Style>
<Hyperlink Focusable="False">
<TextBlock Text="test" />
</Hyperlink>
</TextBlock>

然后一切都按预期进行。问题是内部 TextBlock 获得了焦点,即使外部 Control 被折叠。设置 KeyboardNavigation.TabNavigationOnce解决它作为整个 Container 和它的 child 只获得一次焦点。 ( MSDN )

关于WPF:标签导航因折叠超链接而中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5461584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com