基本上,在我的MeasureOverride
期间,我想检查我的子元素是否设置了某个属性,无论它是什么类型的项目。
public override Size MeasureOverride(Size availableSize)
{
foreach (UIElement child in InternalChildren)
{
//Check for IsSelected property?
}
}
如何做到这一点以确保孩子拥有可用的属性,然后获得它的价值?问题是 UIElement 没有 IsSelected 属性,并且面板可以接受支持该属性的任何子项,所以我不能只转换为特定类型......
好吧,我正在研究两种可能的情况:
1) 子项未将自己添加为Selector.IsSelected
依赖项属性的所有者,在这种情况下,该子项将被完全忽略。2)孩子确实将自己添加为Selector.IsSelected
DependencyProperty的所有者,在这种情况下,我想要该值。
基本上,我想要 IsSelected 值,同时防止我的应用程序在没有与该子元素关联的值的情况下崩溃。
您是否正在寻找Selector.IsSelected
附加属性的值?如果是这样,以下内容可能会有所帮助:
bool isSelected = (bool)child.GetValue(Selector.IsSelectedProperty);
你可以试试typeof(child).GetProperty("IsSelected")
这里有一个 MSDN 示例,您可能也会觉得很有帮助