3

試行の後、FocusVisualStyle はキーボード (タブと矢印キー) によってのみアクティブ化されることがわかりました。

コンポーネントが読み込まれた後に FocusVisualStyle が適用されるようにしようとしましたが、それは不可能です。この問題を回避する簡単な方法はありますか?

私はこれを見つけました:
-プログラムでフォーカスをナビゲートするときにフォーカスビジュアルが表示されない
- WPFボタンはFocusVisualStyleを表示することをどのように決定しますか?
- http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/99856840-f8ef-4547-9150-c4c46ec2f3df

しかし、(コンポーネントを上書きすることなく)明確な解決策を示すものはなく、書くことができませんでした。誰か助けてもらえますか?

4

1 に答える 1

0

あなたの問題を理解しているかどうかはよくわかりませんが、リンクの 1 つの例を試してみたところ、キーボードを使用する場合とまったく同じように、コード ビハインドから次のコンポーネントにフォーカスを移動することができました。これがコードです。

<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 に答える