3

经过尝试,我可以看出 FocusVisualStyle 仅由键盘激活(选项卡和箭头键)。

尝试让 FocusVisualStyle 在组件加载后应用,这是不可能的,有一个简单的方法可以解决这个问题吗?

我发现了这一点:
-以编程方式导航焦点时焦点视觉未显示
- WPF 按钮如何决定显示 FocusVisualStyle?
- http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/99856840-f8ef-4547-9150-c4c46ec2f3df

但是没有一个明确的解决方案(不覆盖组件),我写不出来,有人可以帮忙吗?

4

1 回答 1

0

我不太确定我是否理解您的问题,但是我在其中一个链接中尝试了该示例,并且能够将焦点从后面的代码移至下一个组件,就像您使用键盘所做的那样。这是代码。

<Window x:Class="WpfApplication1.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"
        xmlns:local="clr-namespace:WpfApplication1" Loaded="OnLoaded"
        >
    <StackPanel Margin="10">
        <TextBox Margin="10" x:Name="a" >A</TextBox>
        <TextBox Margin="10" x:Name="b" >B</TextBox>
        <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) {
        a.Focus();
    }

    private void OnClick(object sender, RoutedEventArgs e) {
        var request = new TraversalRequest(FocusNavigationDirection.Next);
        var elementWithFocus = FocusManager.GetFocusedElement(FocusTest) as UIElement;
        if (elementWithFocus != null)
            elementWithFocus.MoveFocus(request);
    }
}
于 2013-05-20T04:49:51.687 回答