【问题标题】:.NET WPF XAML "BindingExpression path error: ... property not found".NET WPF XAML“BindingExpression 路径错误:...找不到属性”
【发布时间】:2010-10-12 12:47:49
【问题描述】:

我试图将我的 W3CError 类型对象的集合绑定到 WPF ListView 控件。

这是一个不错的 13 行小班......

类 W3CError 公共类型为 ErrorOrWarning 公共线路为整数 公共列作为整数 公共消息作为字符串 公共 MessageId 作为字符串 作为字符串的公共解释 公共源作为字符串 枚举错误或警告 验证错误 验证警告 结束枚举 结束类

没有用。我在 Visual Studio 的输出窗口中遇到了这些绑定错误:

System.Windows.Data 错误:39: BindingExpression 路径错误:“行” 在“对象”上找不到属性 ''W3CError' (HashCode=...)'。 绑定表达式:路径=线; 数据项='W3CError' (哈希码=...);目标元素是 '文本块'(名称='');目标属性 是“文本”(输入“字符串”)

嗯,不,那不是属性。它只是公共的。我想这对于 WPF 绑定还不够好?

我通过将我的课程延长到丑陋的 69 行属性样板来让它工作......

类 W3CError Private _Type 为 ErrorOrWarning Private _Line 作为整数 私有 _Col 作为整数 私有 _Message 作为字符串 私有 _MessageId 作为字符串 Private _Explanation 作为字符串 私有 _Source 作为字符串 枚举错误或警告 验证错误 验证警告 结束枚举 公共属性类型()作为 ErrorOrWarning 得到 返回 _Type 结束获取 设置(ByVal 值作为 ErrorOrWarning) _Type = 值 结束集 结束属性 公共财产线()作为整数 得到 返回_行 结束获取 设置(ByVal 值作为整数) _Line = 值 结束集 结束属性 公共属性 Col() 作为整数 得到 返回_Col 结束获取 设置(ByVal 值作为整数) _Col = 值 结束集 结束属性 公共属性 Message() 作为字符串 得到 返回_Message 结束获取 设置(ByVal 值作为字符串) _Message = 价值 结束集 结束属性 公共属性 MessageId() 作为字符串 得到 返回_MessageId 结束获取 设置(ByVal 值作为字符串) _MessageId = 值 结束集 结束属性 公共属性说明()作为字符串 得到 返回_说明 结束获取 设置(ByVal 值作为字符串) _解释=价值 结束集 结束属性 公共属性 Source() 作为字符串 得到 返回_Source 结束获取 设置(ByVal 值作为字符串) _来源 = 价值 结束集 结束属性 结束类

有没有更好的办法?

【问题讨论】:

  • 啊……这就是我的绑定不起作用的原因!谢谢。
  • 我希望我为你省去了一些挫败感,Kieron。

标签: .net wpf xaml binding properties


【解决方案1】:

如果您使用的是 C#,我会说使用自动属性,但我认为它们不在 VB 中。

所以可能不会。您甚至可能想要更进一步,让您的类实现 INotifyPropertyChanged,以便您的 UI 知道属性是否更改。

【讨论】:

  • 骗子!我宁愿 VB 有自动属性而不是内联 XML。
  • 我相信下一版本的 VB(.NET 4.0 / Visual Studio 2010 附带的版本)将具有自动属性。现在没用,但至少最终会有所帮助。
【解决方案2】:

我不会称其为更好的方式,但您可以实现ICustomTypeDescriptor 并通过GetProperties 方法将您的字段公开为假属性。不过,如果你有几十个字段,它最终只会减少代码。


最初由 Robert Macnee 发布,但后来被删除。在这里恢复是因为它让我感兴趣...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多