Silverlight DataGridにフォーカスがあるかどうかを確認する必要があります。 FocusとGotFocusのイベントを設定する方法はあるが、フォーカスがあるかどうかを確認するための確認はできません。SilverlightのDataGridにフォーカスがあるかどうかを確認する方法はありますか?
すべてのアイデア?
Silverlight DataGridにフォーカスがあるかどうかを確認する必要があります。 FocusとGotFocusのイベントを設定する方法はあるが、フォーカスがあるかどうかを確認するための確認はできません。SilverlightのDataGridにフォーカスがあるかどうかを確認する方法はありますか?
すべてのアイデア?
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;
}
}
希望のように私たちの拡張メソッドを適応させることができますチェックできるようにするには?
ありがとうございます - 私はそれを外出しましょう。 – cyberbobcat
さて、私はちょっと編集したことを見て欲しい。 – Tjipke
はい、それは助けてくれます - ありがとうございます。 – cyberbobcat