WPF - 如何让我的面板查看是否在我的孩子是 UIElements 时对他们设置了依赖项属性



基本上,在我的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 示例,您可能也会觉得很有帮助

相关内容

最新更新