在代码隐藏中访问XAML元素父级的IsVisible属性

41zrol4v  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(131)
if (span.Text == "Specific String")
{
    var spanAncestor = span.Parent.Parent;
    spanAncestor.IsVisible = false; // Throws error. Read below.
}

我得到的错误是:
错误CS1061 "Element"不包含"IsVisible"的定义,并且找不到接受"Element"类型的第一个参数的可访问扩展方法"IsVisible"(是否缺少using指令或程序集引用?)
该范围具有作为父项的FormattedString,该范围具有作为父项的Label
有没有办法为祖先元素设置IsVisible属性?

f5emj3cl

f5emj3cl1#

Parent的类型为Element,该类型没有IsVisible属性。您需要先对其进行强制转换

if (parent is VisibleElement)
{
  ((VisibleElement)parent).IsVisible = false;
}
hmmo2u0o

hmmo2u0o2#

根据Jason的回答,您可以保存类型转换,因为您已经检查了if子句中的类型,并使用pattern matching执行以下操作:

if (parent is VisibleElement visibleParent)
{
    visibleParent.IsVisible = false;
}

相关问题