XAML:我可以超载绑定解析吗?

时间:2015-10-08 23:02:15

标签: wpf xaml

Y:问题

绑定只是"仅仅"一组在运行时解释的名称 - 字符串对。当这会产生意外结果时,是否可以截获绑定解析?这可能会揭示诸如计时问题(不正确的初始化顺序,竞争条件)和拼写错误之类的问题,或者消除这些问题以便调整焦点。

我希望能够拦截对Binding.ProvideValue或类似内容的调用,但所有相关信息(PathDataItem等)都可用。我想知道Binding班级如何理解我的指示,何时理解

我尝试了using an IValueConverter,但在错误(下方)发生之前未调用。

我尝试使用私有MarkupExtension实例编写Binding,但它没有通过免费检索相关信息来帮助我。具体而言,它没有确定通过DataItem继承的适当DataContext(我猜测它通过internal与包含XAML元素的通信获取信息,因为static代码不会对我产生偏见。) < / p>

X:问题

我正在使用此绑定,这恰好位于actipro属性网格项上(其他几个相同的绑定工作正常):

(编辑因为我最初复制了错误的绑定)

 Value="{Binding VMLeftPLaneOneHoleHoleOneSlugCylinderLen,
                 Mode=OneWay,
                 StringFormat=F3}"

我无法动摇以下运行时错误。上述类中的属性存在,并且不涉及拼写错误(由于名称荒谬而合理猜测)。它可以公开 ly(其他属性不是,这是我的最后一个)。该属性仅提供一个getter,因此Mode=OneWay

System.Windows.Data Error: 40 : BindingExpression path error: 'VMLeftPLaneOneHoleHoleOneSlugCylinderLen' property not found on 'object' ''LegacyViewModel' (HashCode=3273904)'. BindingExpression:Path=VMLeftPLaneOneHoleHoleOneSlugCylinderLen; DataItem='LegacyViewModel' (HashCode=3273904); target element is 'PropertyGridPropertyItem' (Name=''); target property is 'Value' (type 'Object')

我一直在盯着这段代码,而我在那种情绪中,我确定我已经检查了所有内容,并且完全不可信的解释突然出现在我脑海中 - 就像XAML一样具有不同LegacyViewModel类的解释器,一个缺少此特定属性的类。打字后我继续点击Clean + Rebuild以确保。

我没有最小的测试用例,主要是因为这个项目庞大而且无法以多种方式维护。但我并不是要求解决实际问题,而只是通过技术来帮助我解决问题。

我犯了一个明显的错误吗?有没有我没有检查过的东西? 我可以做些什么来衡量XAML系统的这个相当深的部分?

0 个答案:

没有答案