传播绑定期间发生的异常

时间:2017-05-15 10:14:10

标签: wpf data-binding

我需要让数据绑定期间发生的异常冒泡并且不被WPF吞没。通常这个错误在输出中就足够了,但在我的情况下我需要让它冒泡。

我有一个如下定义的属性:

public string Text
{
    get
    {
        return (string)GetValue(TextProperty);
    }
    set
    {
        SetValue(TextProperty, value);
    }
}
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(nameof(Text), typeof(string), typeof(EntitySearch), new PropertyMetadata(string.Empty, TextChangedCallback));

public static void TextChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    if (DesignerProperties.GetIsInDesignMode(d))
        return;

    if (d is EntitySearch es)
    {
        es.m_key = e.NewValue;
        object obj = es.m_context.Set(es.m_entityType).Find(e.NewValue);
        if (obj.IsEmpty())
            throw new Exception("Entity with this key does not exist.");
        es.SelectedObject = obj;
    }
}

这是输入控件的常用Text属性,但在我的情况下,此值用作从数据库中获取内容的键。正如你所看到的,我想在这里抛出异常并让异常泡沫化。最终,堆栈中的某个人将处理异常并将其显示给用户。

有什么建议吗?

我想要注意,如果可能的话,我会保留抛出异常的概念,而不是将某些属性设置为false,然后再以某种MVVM方式处理此属性。

0 个答案:

没有答案