【问题标题】:WPF Binding : Casting in binding pathWPF 绑定:在绑定路径中强制转换
【发布时间】:2013-05-09 18:13:33
【问题描述】:

我有一个绑定,其中Path 设置为Path=Item.Tag.caption,但我需要先将Item 转换为IEDGE,这样我才能访问Tag 属性。 有没有办法做到这一点?

【问题讨论】:

  • 您是在代码中还是在 Xaml 中执行此操作?
  • 我需要在 Xaml 中执行此操作
  • @Aminouvic 如果Item 正在实现IEDGE 并且Tag 是一个属性,它应该像您发布的那样工作。你遇到了什么错误?
  • @DHN 问题是在绑定Item 的类型为object,然后我收到一个错误,即Tag 找不到object 的属性

标签: wpf xaml binding


【解决方案1】:

问题的最终解决方案是使用以下语法:

Path=Item.(myNameSpace:IEdge.Tag).caption

前面的代码将Item 转换为IEdge 类型,以便访问Tag 属性。

在多个嵌套转换的情况下,全局模式是:

Path=Obj1.(ns1:TypeObj1.Obj2).(ns2:TypeObj2.Obj3)...(nsN:TypeObjN.BindedProp) 

按照 cmets 中的建议 在使用此解决方案时不要使用速记绑定语法。确保您实际使用Path=,否则它将无法正常工作!

【讨论】:

  • 好的,我让它工作了,但仍然 - 你在哪里找到这些信息?这似乎是一些 WPF 幕后无证黑魔法......
  • @Libor :实际上我在 msdn PropertyPath XAML Syntax 上使用 Property partialqualified 找到了解决方案,参见 Single Property, Attached or else Type-Qualified 部分
  • web.archive.org/web/20120814100526/http://msdn.microsoft.com/… 对于 2015 年的我们这些人,@Aminouvic 发布的链接不再存在。
  • 在使用此解决方案时不要使用速记绑定语法。确保您实际使用 Path= 否则它将不起作用。
  • 如果我只想投射怎么办。而不是像Item.(myNameSpace:IEdge) 这样访问属性?这失败了,它希望我访问IEdge 的属性,但我只想将Item 转换为IEdge
猜你喜欢
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2011-03-31
相关资源
最近更新 更多