AFAIK, odağı olup olmadığını kontrol etmek için doğrudan bir yöntem veya özellik yoktur, ancak FocusManager.GetFocusedElement() yöntemini kullanabilmeniz gerekir. sonra bir uzantısı yöntemi tanımlarsanız
, sen MyDataGrid.HasFocus() aramak gerekir:
public static class ControlExtensions
{
public static bool HasFocus(this Control aControl)
{
return System.Windows.Input.FocusManager.GetFocusedElement() == aControl;
}
}
[düzenlendi: Ben Şimdi test etmedi:] Ancak sorun var: çağrı GetFocusedElement(), DataGrid içindeki mevcut odaklanmış hücreyi döndürebilir. Yani bu durumda HasFocus yanlış döner.
DataGrid veya hücrelerinden biri odaklı, biz bu biraz yardımcı olur bu
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;
}
}
Hope gibi bizim uzatma yöntemini uyarlayabilir kontrol edebilmek için mi?
Teşekkürler - Vereceğim. – cyberbobcat
Peki umarım görürsünüz biraz ... – Tjipke
Evet, bu yardımcı olur - tekrar teşekkürler. – cyberbobcat