gpt4 book ai didi

wpf - 以编程方式导航焦点时焦点视觉不显示

转载 作者:行者123 更新时间:2023-12-04 20:00:21 24 4
gpt4 key购买 nike

每当我尝试以编程方式移动焦点时,焦点视觉(虚线矩形)都不会显示。

可以做些什么来强制显示此视觉对象?

<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="OnLoaded">
<StackPanel>
<TextBlock x:Name="a" Focusable="True">A</TextBlock>
<TextBlock Focusable="True">B</TextBlock>
<Button Focusable="False" Click="OnClick">Move Focus</Button>
</StackPanel>
</Window>

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void OnLoaded(object sender, RoutedEventArgs e)
{
Keyboard.Focus(a);
}

private void OnClick(object sender, RoutedEventArgs e)
{
var request = new TraversalRequest(FocusNavigationDirection.Next);
var elementWithFocus = Keyboard.FocusedElement as UIElement;
if (elementWithFocus != null)
elementWithFocus.MoveFocus(request);
}
}

最佳答案

如果您查看(在反射器/ilspy 中)KeyboardNavigation 的 ShowFocusVisual,您会发现框架仅在最后一次输入来自键盘时才会显示它(或者如果基于 KeyboardCues 系统参数信息的内部静态属性为真)。所以我认为除了使用反射来临时设置该属性或异步聚焦元素并强制执行键盘操作(可能使用 winforms SendKeys 或 keybd_event api)之外,没有什么好的方法可以做到这一点,但我不推荐.

关于wpf - 以编程方式导航焦点时焦点视觉不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14288665/

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