如何在DataGridCell中获得可聚焦控件?

时间:2015-07-03 11:31:27

标签: c# wpf

我有一个DataGrid,我正在订阅PreparingCellForEdit。在它上面有一个代码,通过从键盘焦点获取元素来返回DataGridCell

var cell = Keyboard.FocusedElement as DataGridCell;

当我有单元格时,我需要找出其中是否有一个可启用,可见和可编辑的可聚焦元素。

示例:

 FieldX  |      FieldY
--------------------------
   [ ]+  |       [ ]+
   [ ]*  |  (not visible)

+ Enabled, visible, focusable
* IsEnabled = false

如何判断单元格内是否有这样的元素?

1 个答案:

答案 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);
}