2009-02-26 11 views

答えて

3

AFAIKフォーカスがあるかどうかを確認する直接的な方法やプロパティはありませんが、FocusManager.GetFocusedElement()を使用できるはずです。しかし、キャッチがある [編集した:私は今、テストにそれをやった]:

public static class ControlExtensions 
{ 
    public static bool HasFocus(this Control aControl) 
    { 
     return System.Windows.Input.FocusManager.GetFocusedElement() == aControl; 
    } 
} 

あなたが拡張メソッドを定義する場合、あなたはMyDataGrid.HasFocus()を呼び出すことができるはずです呼び出しGetFocusedElement()は、DataGrid内の現在フォーカスされているセルを返すことができます。その場合、HasFocusはfalseを返します。

のDataGridまたはその細胞の1が集中している場合、我々はこれはビットを助け、この

public static class ControlExtensions 
{ 
    public static bool HasFocus(this Control aControl, bool aCheckChildren) 
    { 
     var oFocused = System.Windows.Input.FocusManager.GetFocusedElement() as DependencyObject; 
     if (!aCheckChildren) 
      return oFocused == aControl; 
     while (oFocused != null) 
     { 
      if (oFocused == aControl) 
       return true; 
      oFocused = System.Windows.Media.VisualTreeHelper.GetParent(oFocused); 
     } 
     return false; 
    } 
} 

希望のように私たちの拡張メソッドを適応させることができますチェックできるようにするには?

+0

ありがとうございます - 私はそれを外出しましょう。 – cyberbobcat

+0

さて、私はちょっと編集したことを見て欲しい。 – Tjipke

+0

はい、それは助けてくれます - ありがとうございます。 – cyberbobcat

関連する問題