0

これは私にとってはうまくいきません.Tabキーを押したときにのみラジオボタンに焦点を当てることができます. 誰も修正方法を知っていますか?

 void SelectPaymentModeView_Loaded(object sender, RoutedEventArgs e)
    {
        this.radPaymentMode.Focus(); 
    }

ラジオボタンの内容はテキストです... 私も Keyboard.Focus(this.radPaymentMode); を試します。


完全なコードを参照してください。

PaymentMode[] modes = data[1] as PaymentMode[];
if (modes.Length > 0)
{
    for (int i = 0; i < modes.Length; i++)
    {
        RadioButton rad = new RadioButton();

        rad.Name = "radPayment" + i;
        rad.GroupName = "PaymentModes";
        rad.Content = modes[i].Name;
        rad.DataContext = modes[i];
        rad.Margin = new Thickness(110, 0, 0, 5);
        rad.VerticalAlignment = System.Windows.VerticalAlignment.Center;
        rad.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        Grid.SetRow(rad, 3 + i);
        Grid.SetColumn(rad, 1);
        gridPaymentModes.RowDefinitions.Insert(3, new RowDefinition());
        gridPaymentModes.Children.Add(rad);
        radPaymentModes.Add(rad);

        if (!string.IsNullOrEmpty((this.DataContext as Order).Payment))
        {
            String paymentOrder = rad.Content as String;
            if (paymentOrder.Equals((this.DataContext as Order).Payment))
            {
                rad.IsChecked = true;
            }
        }

        rad.Checked += new RoutedEventHandler(rad_Checked);
    }
    radPaymentModes[0].Loaded += SelectPaymentModeView_Loaded;
}

 void SelectPaymentModeView_Loaded(object sender, RoutedEventArgs e)
    {
        FocusManager.SetFocusedElement(FocusManager.GetFocusScope((sender as RadioButton)), (sender as RadioButton));
    }
4

1 に答える 1

0

キーボード フォーカス マネージャーは、キーボードを使用してコントロールに移動するときに、点線のフォーカス アドナーを表示します (たとえば、マウスを使用するときに WPF はフォーカス四角形を非表示にするため、視覚的な混乱が少なくなります)。

強制するには、次のようなコードを使用します (btnRadio がボタンであると仮定します)。

    FocusManager.SetFocusedElement(FocusManager.GetFocusScope(btnRadio), btnRadio);
于 2012-05-08T23:40:32.187 に答える