在WPF中处理无效的图像源

时间:2015-08-31 10:49:36

标签: c# wpf

我有一个视图绑定到viewmodel中的字符串资源,它可以很好地链接到Web上的图像或硬盘图像文件。但是,如果选择了错误的图像源,则图像不会显示原因。我是否可以做一个绑定,看看图像是否有一个有效的来源,或者是否有办法放置默认图像,如果来源不好。

ViewModel中的属性:

    public string ImageSource
    {
        get { return imageSource; }
        set
        {
            imageSource = value;
            NotifyPropertyChange("ImageSource");
        }
    }

的Xaml:

<Image Grid.Row="0" Name="picture" Source="{Binding ImageSource}" Height="auto" Width="auto" MaxWidth="750" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"  />

绑定工作正常。

2 个答案:

答案 0 :(得分:3)

如果对于坏图像保证ImageSource为空,则可以使用数据触发器:

<Image Grid.Row="0" Name="picture" Height="auto" Width="auto" MaxWidth="750" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
        <Image.Style>
            <Style TargetType="{x:Type Image}">
                <Setter Property="Source" Value="{Binding ImageSource}" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ImageSource}" Value="{x:Null}">
                        <Setter Property="Source" Value="default_image.png" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>

答案 1 :(得分:2)

Binding具有TargetNullValue属性,完全针对您的场景:

<Image Source="{Binding ImageSource, 
                        TargetNullValue={StaticResource DefaultImage}}" />    

当然,资源必须在某处定义:<BitmapImage x:Key="DefaultImage" UriSource="default_image" />