【问题标题】:x:Reference "" is not a valid value for the property "IsVisible"x:Reference "" 不是属性 "IsVisible" 的有效值
【发布时间】:2019-06-11 08:53:03
【问题描述】:

我对 WPF 比较陌生,并且非常喜欢在标记中对 GUI 逻辑进行处理的可能性。 目前,我有一个控件,我只想在另一个控件可见时才可见。

<AttachedControl IsVisible="{x:Reference Name=mainControl}"/>
<MasterControl Name="mainControl" IsVisible="True">
...
</MasterControl>

当我使用它时,它在设计器中工作,但会产生错误消息:

错误“”不是该属性的有效值 “可见”。 ProjectX MyUserControl.xaml

它也编译成功,我可以运行该应用程序。那么谁能告诉我问题出在哪里或我在做什么/理解错误?

【问题讨论】:

  • 您可能想使用数据绑定:IsVisible="{Binding IsVisible, ElementName=mainControl}".
  • 虽然我还不明白,但它正在工作。 :)
  • 在不了解基本概念的情况下开始编写 WPF/XAML 并不是一个好主意。可能阅读了一些介绍性材料。例如。 WPF Unleashed Adam Nathan 着,一本非常好的书。
  • 这就是这个项目的意义所在。从 WPF 开始。 ;)

标签: .net wpf xaml visual-studio-2019


【解决方案1】:

x:Reference 标记扩展引用元素的x:Name,但您不能将IsVisible 属性绑定到具有x:Name“mainControl”本身的控件。您应该绑定到它的布尔属性。

如果mainControl 具有IsVisible 属性,这应该可以工作,即x:Reference 是绑定的IsVisible 是路径:

<AttachedControl IsVisible="{Binding IsVisible, Source={x:Reference Name=mainControl}}"/>

您还可以通过设置绑定的ElementName 属性来绑定到另一个元素:

<AttachedControl IsVisible="{Binding IsVisible, ElementName=mainControl}"/>

What is the difference between x:Reference and ElementName?

【讨论】:

    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多