我有一个DataGrid
,我正在订阅PreparingCellForEdit
。在它上面有一个代码,通过从键盘焦点获取元素来返回DataGridCell
。
var cell = Keyboard.FocusedElement as DataGridCell;
当我有单元格时,我需要找出其中是否有一个可启用,可见和可编辑的可聚焦元素。
示例:
FieldX | FieldY
--------------------------
[ ]+ | [ ]+
[ ]* | (not visible)
+ Enabled, visible, focusable
* IsEnabled = false
如何判断单元格内是否有这样的元素?
答案 0 :(得分:0)
使用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);
}