如何在DataGridCell中获得可聚焦控件
本文关键字:聚焦 控件 DataGridCell | 更新日期: 2023-09-27 18:00:59
我有一个DataGrid
,我正在订阅PreparingCellForEdit
。上面有一个代码,通过从键盘焦点获取元素来返回DataGridCell
。
var cell = Keyboard.FocusedElement as DataGridCell;
当我有一个单元格时,我需要找出里面是否有一个可聚焦的元素,它是启用的、可见的和可编辑的。
示例:
FieldX | FieldY
--------------------------
[ ]+ | [ ]+
[ ]* | (not visible)
+ Enabled, visible, focusable
* IsEnabled = false
我如何才能发现细胞内是否存在这样的元素?
使用VisualTreeHelper
遍历子元素,然后检查这些元素是否满足您的要求。类似这样的东西:
var elementList = new List<DependencyObject>();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject); i++)
{
var element = VisualTreeHelper.GetChild(dependencyObject, i);
if ((Visibility)element.GetValue(FrameworkElement.VisibilityProperty) == Visibility.Visible)
elementList.Add(element);
}