请让我开始追踪此错误
问题是我绑定了很多FieldValue,显然并非所有都失败了或者我会得到更多这些错误
如何找到抛出这些警告的XAML绑定?
哈希是否指向特定绑定?
System.Windows.Data Warning: 56 : Created BindingExpression (hash=44291519) for Binding (hash=2717082)
System.Windows.Data Warning: 58 : Path: 'FieldValue'
System.Windows.Data Warning: 56 : Created BindingExpression (hash=4012957) for Binding (hash=2717082)
System.Windows.Data Warning: 58 : Path: 'FieldValue'
System.Windows.Data Warning: 62 : BindingExpression (hash=4012957): Attach to System.Windows.Controls.TextBox.Text (hash=30313526)
System.Windows.Data Warning: 67 : BindingExpression (hash=4012957): Resolving source
System.Windows.Data Warning: 70 : BindingExpression (hash=4012957): Found data context element: TextBox (hash=30313526) (OK)
System.Windows.Data Warning: 78 : BindingExpression (hash=4012957): Activate with root item DocFieldDecimalSV (hash=12144638)
System.Windows.Data Warning: 107 : BindingExpression (hash=4012957): At level 0 using cached accessor for DocFieldDecimalSV.FieldValue: RuntimePropertyInfo(FieldValue)
System.Windows.Data Warning: 104 : BindingExpression (hash=4012957): Replace item at level 0 with DocFieldDecimalSV (hash=12144638), using accessor RuntimePropertyInfo(FieldValue)
System.Windows.Data Warning: 101 : BindingExpression (hash=4012957): GetValue at level 0 from DocFieldDecimalSV (hash=12144638) using RuntimePropertyInfo(FieldValue): <null>
System.Windows.Data Warning: 80 : BindingExpression (hash=4012957): TransferValue - got raw value <null>
System.Windows.Data Warning: 82 : BindingExpression (hash=4012957): TransferValue - user's converter produced ''
System.Windows.Data Warning: 89 : BindingExpression (hash=4012957): TransferValue - using final value ''
我想我已经找到了
获取Get的调用,如果结果是Decimal?(null),然后将错误改为“得到原始值”
然后它调用转换器
公共对象转换(对象值,类型targetType,对象参数,
CultureInfo culture)
{
Debug.WriteLine("DecimalNullConverter Convert");
Decimal? Decimal = (Decimal?)value;
if (Decimal == null)
return string.Empty;
return Decimal.ToString();
}
然后是最后两行
所以我认为绑定只会在调用转换后得到一个String.Emply
所以我认为他们警告我可以忽略
我真的认为会有一种直接的方式来查看绑定是什么引发了警告
答案 0 :(得分:1)
将有问题的转换器修改为默认为文本&#34; FAIL&#34;除非有有效的数据要转换,否则将返回。返回默认文本而不是string.empty,然后直观地找到问题。
如果绑定发生在视觉上无法看到默认文本的位置,请在转换内部设置断点并以另一种方式确定控件1)可能更改/使用带有其中一个项目的多绑定转换器在控件的名称?或者2)使用/设置ConverterParameter
并将id传入转换以识别特定控件。
或者在绑定上设置FallbackValue
以查看是否可以缩小可能的文本框列表。