Cast(Of ?) from UIElement



在silverlight中,我的自定义控件位于StackPanelUIElementCollection中。我想按一个特定的值得到它们的列表。容器中只有DivElements。当我知道我有一个或多个Nothing时,它会返回。我知道我可以制作一个简单的循环并内联转换类型,但我想在LINQCast(Of TResult)方面做得更好。我尝试铸造:

Dim myList = TryCast(spDivs.Children.Where(Function(o) DirectCast(o, DivElement).ElementParent Is bComm).Cast(Of DivElement)(), List(Of DivElement))

问题是不能强制转换为List(Of DivElement)。集合是UIElementCollection,而不是List(Of T)

不过,你可以建立一个新的列表。这也可以通过使用OfType而不是手动铸造来简化:

Dim myList = spDivs.Children.OfType(Of DivElement)()
                            .Where(Function(o) o.ElementParent Is bComm)
                            .ToList()

最新更新