绑定只是"仅仅"一组在运行时解释的名称 - 字符串对。当这会产生意外结果时,是否可以截获绑定解析?这可能会揭示诸如计时问题(不正确的初始化顺序,竞争条件)和拼写错误之类的问题,或者消除这些问题以便调整焦点。
我希望能够拦截对Binding.ProvideValue
或类似内容的调用,但所有相关信息(Path
,DataItem
等)都可用。我想知道Binding
班级如何理解我的指示,何时理解。
我尝试了using an IValueConverter
,但在错误(下方)发生之前未调用。
我尝试使用私有MarkupExtension
实例编写Binding
,但它没有通过免费检索相关信息来帮助我。具体而言,它没有确定通过DataItem
继承的适当DataContext
。 (我猜测它通过internal
与包含XAML元素的通信获取信息,因为static
代码不会对我产生偏见。) < / p>
我正在使用此绑定,这恰好位于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系统的这个相当深的部分?