WPF Linq 对 TreeViewItem 标签强制转换问题的任何查询

问题描述 投票:0回答:1

我有 WPF TreeViewItems,并且我为标签定义了一个自定义对象类,例如具有类型、名称、描述等属性的自定义标签。 我需要获取 tag.Type = "test" 的所有项目,因此我定义了以下 Linq 查询:

if (!myNode.Items.Cast<TreeViewItem>().Any(item => item.Tag is CustomTag && 
(CustomTag)item.Tag.Type = "test")) { ...

不幸的是 Visual Studio 不喜欢它,我无法找到合适的方法来做到这一点

c# wpf linq
1个回答
0
投票

我认为它抱怨这部分

(CustomTag)item.Tag.Type = "test"
- 因为它试图从
Tag
读取
object
,你需要明确告诉首先进行解析:
((CustomTag)item).Tag.Type = "test"
,但是你可以使用更好的语法:模式匹配:

if(!myNode.Items
    .Cast<TreeViewItem>()
    .Any(item => item.Tag is CustomTag customTag && customTag.Tag.Type = "test"))
© www.soinside.com 2019 - 2024. All rights reserved.