2012-05-08 22 views
0

これは私のためには機能しません。ラジオボタンのフォーカスは、Tabキーを押したときにのみ機能します。誰かが修正する方法を知っていますか?FocusVisualStyle RadioButtonが動作しない

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)); 
    } 

答えて

0

キーボードフォーカスマネージャは、点線のフォーカスadornerが表示されるようになり(WPFのときにマウスのフォーカス矩形を非表示にしたいですたとえば、視覚的な混乱が少ないので使用されます)。

はそれを強制するには、次のようなコードを使用する(btnRadioと仮定すると、あなたのボタンです):

FocusManager.SetFocusedElement(FocusManager.GetFocusScope(btnRadio), btnRadio); 
+0

私のラジオボタンがフォーカスを持っています!しかし、彼は私のFocusVisualStyleを適用しませんでした。私がTabを押すと適用されますが、うまくいきません。 –

+0

これは意図的なものです。ユーザーからのフォーカスのみが実際にキーボードからコントロールにフォーカスを移動します。あなたがそれを自分自身に強制したいなら、私が示したようなものが必要です。 – jschroedl

+0

あなたが見せたコードは私のためにはうまくいかなかった! –