【发布时间】:2015-10-29 16:28:17
【问题描述】:
小问题
有没有一种快速的方法可以在运行时知道特定附加属性绑定到什么?
详情
我正在调试一个 UserControl(继承 ItemsControl),它通过样式将其项目的 Canvas.Left 和 Canvas.Top 绑定到 ViewModel 对象的两个属性。在运行时,我在某个位置放置了一个断点,并想检查Canvas.Left附加属性的绑定。
请注意,我不想查看项目附加属性的当前值。我可以通过在 QuickWatch 或即时窗口中检查 Canvas.GetLeft(myItem) 的值来轻松做到这一点。我想在这里检查实际的绑定,即这个附加属性绑定到myItem的VM属性名称。
我已经尝试过 Snoop,但遗憾的是它没有显示附加属性的绑定(如果我没有遗漏一些明显的东西的话)。
【问题讨论】:
-
Output窗口将显示任何绑定错误。没有错误可能意味着绑定(如果真的有的话)是成功的。附加属性在值改变时有回调,您可以使用它来调试附加属性绑定。 -
stackoverflow.com/a/2788583/5095281此链接可能会有所帮助
-
@NeverAgain:那篇文章没有讨论附加属性。
-
@Sinatr:我在输出窗口中没有看到任何绑定错误。加上附加属性的值没有改变,所以听回调也无济于事。
-
加载baml后至少触发一次事件(例如,如果你在xaml中写
Canvas.Top="0"你会得到它,如果你不写,那么它显然有默认值),你可以覆盖属性,请参阅here,然后设置回调并查看它为给定项目设置的内容(sender将是您设置附加属性值的DependencyProperty)。
标签: c# wpf xaml data-binding attached-properties