WPF - Как заставить мою Panel видеть, установлен ли DependencyProperty на моего ребенка, когда они являются UIElements? - PullRequest
1 голос
/ 20 мая 2011

В основном, во время моего MeasureOverride я хочу проверить, не установлено ли для моего дочернего элемента определенное свойство независимо от того, к какому типу элементов это относится.

public override Size MeasureOverride(Size availableSize)
{
    foreach (UIElement child in InternalChildren)
    {
        //Check for IsSelected property?
    }
}

Как можно было бы сделать это таким образом, чтобы у ребенка было свойство в наличии, а затем получить его значение? Проблема в том, что UIElement не имеет свойства IsSelected, и панель может принимать любого дочернего элемента, который поддерживает это свойство, поэтому я не могу просто привести к определенному типу ...


Ну, я смотрю на 2 возможных сценария:

1) Дочерний объект не добавился в качестве владельца Selector.IsSelected DependencyProperty, и в этом случае этот дочерний элемент полностью игнорируется. 2) Ребенок добавил себя в качестве владельца Selector.IsSelected DependencyProperty, и в этом случае мне нужно это значение.

По сути, я хочу, чтобы значение IsSelected также предотвращало сбой моего приложения в случае, если нет значения, связанного с этим дочерним элементом.

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Вы ищете значение Selector.IsSelected вложенного свойства?В этом случае может помочь следующее:

bool isSelected = (bool)child.GetValue(Selector.IsSelectedProperty);
0 голосов
/ 20 мая 2011

Вы можете попробовать typeof(child).GetProperty("IsSelected")

Есть пример MSDN здесь , который может оказаться вам полезным

...