跟踪UI绑定错误

时间:2015-04-26 20:58:33

标签: .net wpf visual-studio-2013 binding error-handling

请让我开始追踪此错误 问题是我绑定了很多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

之前抛出这些错误

所以我认为他们警告我可以忽略

我真的认为会有一种直接的方式来查看绑定是什么引发了警告

1 个答案:

答案 0 :(得分:1)

将有问题的转换器修改为默认为文本&#34; FAIL&#34;除非有有效的数据要转换,否则将返回。返回默认文本而不是string.empty,然后直观地找到问题。

如果绑定发生在视觉上无法看到默认文本的位置,请在转换内部设置断点并以另一种方式确定控件1)可能更改/使用带有其中一个项目的多绑定转换器在控件的名称?或者2)使用/设置ConverterParameter并将id传入转换以识别特定控件。

或者在绑定上设置FallbackValue以查看是否可以缩小可能的文本框列表。