从WPF BindingExpression获取错误消息

时间:2014-09-04 09:50:17

标签: c# wpf binding

有没有办法从程序生成的绑定中获取错误消息?我只看到例如状态" PathError",但不是失败的原因。

var binding = new Binding(path);
var expression = BindingOperations.SetBinding(this, TestProperty, binding);
if (expression.Status == BindingStatus.PathError)
{
    throw new Exception("Invalid binding!");   //why did the binding fail?
}

依赖项属性定义为

private static readonly DependencyProperty TestProperty =
    DependencyProperty.Register("Test", typeof(object), typeof(DashboardShape));

亚历

1 个答案:

答案 0 :(得分:0)

在WPF中查看Binding错误的方法是在Visual Studio中打开输出窗口。如果尚未输出,则可以从选项对话框中将WPF跟踪打开到输出窗口。您可以按照以下路径找到选项:

  

工具&gt;选项&gt;调试&gt; <输出窗口> WPF跟踪设置

找到相关选项页面后,您可以将数据绑定设置为关闭以外的值。 警告是一个很好的使用级别。

enter image description here


更新&gt;&gt;&gt;

Binding错误应该显示在输出窗口中,无论它们是如何创建的,所以你说没有错误似乎很奇怪。但是,在尝试调试Binding问题时,我还想使用另一个技巧...... DataBindingDebugConverter

public class DataBindingDebugConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        Debugger.Break();
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        Debugger.Break();
        return value;
    }
}

只需将此Converter添加到您遇到问题的Binding,然后您就可以看到您拥有的数据绑定值。请注意,这将显示Binding错误,但会帮助您进行Binding调试。