追踪 UI 绑定错误
Track down UI binding error
请让我开始追踪这个错误
问题是我绑定了很多 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),则错误 "got raw value "
然后它调用转换器
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
Debug.WriteLine("DecimalNullConverter Convert");
Decimal? Decimal = (Decimal?)value;
if (Decimal == null)
return string.Empty;
return Decimal.ToString();
}
然后最后两行
所以我认为绑定只是在调用转换后抛出这些错误以获得 String.Emply
所以我认为他们警告我可以忽略
我真的认为会有一种直接的方法来查看是什么绑定引发了警告
将有问题的转换器修改为默认文本 "FAIL",除非有有效数据要转换,否则将返回该文本。 Return默认的文字而不是string.empty然后目测发现问题。
如果绑定发生在视觉上无法看到默认文本的位置,请在转换中设置一个断点,并使用 1) 可能 changing/using 一个多绑定转换器以控件名称传递的项目?或 2) Use/set ConverterParameter
并将 id 传递给转换以标识特定控件。
或在绑定上设置 FallbackValue
以查看是否可以缩小可能的文本框列表。
请让我开始追踪这个错误
问题是我绑定了很多 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),则错误 "got raw value "
然后它调用转换器
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
Debug.WriteLine("DecimalNullConverter Convert");
Decimal? Decimal = (Decimal?)value;
if (Decimal == null)
return string.Empty;
return Decimal.ToString();
}
然后最后两行
所以我认为绑定只是在调用转换后抛出这些错误以获得 String.Emply
所以我认为他们警告我可以忽略
我真的认为会有一种直接的方法来查看是什么绑定引发了警告
将有问题的转换器修改为默认文本 "FAIL",除非有有效数据要转换,否则将返回该文本。 Return默认的文字而不是string.empty然后目测发现问题。
如果绑定发生在视觉上无法看到默认文本的位置,请在转换中设置一个断点,并使用 1) 可能 changing/using 一个多绑定转换器以控件名称传递的项目?或 2) Use/set ConverterParameter
并将 id 传递给转换以标识特定控件。
或在绑定上设置 FallbackValue
以查看是否可以缩小可能的文本框列表。