绑定的BitmapImage属性使其值读取两次

时间:2015-01-24 18:53:00

标签: c# wpf mvvm

今天,在涉及将BitmapImage绑定到ImageBrush XAML标记时,我遇到了一种奇怪的.NET框架行为。 我正在做的是尝试在属性的getter中创建一个BitmapImage对象。在某些情况下,图像的加载可能会失败(例如,当找不到资源时)。 以下是该属性的代码:

public BitmapImage BackgroundImg
{
    get
    {
        try
        {
            return ResourceHelper.GetImage(this.GetType().Namespace, EnumHelper.GetImageUri(MathFunction));
        }
        catch(ArgumentException e)
        {
            MessageBox.Show(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            return null;
        }
    }
}

正如您在上面所看到的,每次无法找到资源时,我都会显示一个消息框。我遇到的问题是该属性被击中两次,而我只通知视图一次(RaisePropertyChanged(() => BackgroundImg))。当然,我并没有在代码中的任何地方调用该属性。

我找到了这种情况的解决方案,即将属性类型从BitmapImage更改为object,但我仍然想知道问题的根源以及我是不是只是做错了。

所以问题是:上述行为的原因是什么?除了将属性类型更改为object之外还有其他解决方法吗?

0 个答案:

没有答案