首页 > 解决方案 > 为什么将 FormatConvertedBitmap 设置为备用图像源会引发“源”未设置异常?

问题描述

当项目不可用时,我正在尝试将项目的图像变灰。下面的代码应该可以解决问题(处理所有可能的图像状态:可用、不可用、不存在)。但是编译器一直说它没有设置图像源,而它显然是。我错过了什么吗?谢谢你的帮助。

这是图像代码:

<Image x:Name="cntFlag" Grid.Row="0" Grid.Column="0" Width="20" Height="20" Margin="10,0" VerticalAlignment="Center" Stretch="UniformToFill" ToolTip="{Binding MatchData.Country_Id}">

<Image.Style>
    <Style TargetType="{x:Type Image}">
        <Setter Property="Source">
            <Setter.Value>
            
                <Binding Path="MatchData.Country_Id" Converter="{StaticResource stringToBitmapImageConverter}" ConverterParameter="pack://application:,,,/media/images/flags/{0}.png">
                    <Binding.TargetNullValue>
                        <ImageSource>media/images/default/NoFlag.png</ImageSource>
                    </Binding.TargetNullValue>
                </Binding>

            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <DataTrigger Binding="{Binding MatchData.IsMatchCancelledOrPostponed}" Value="True">
                <Setter Property="Source">
                    <Setter.Value>
                        <FormatConvertedBitmap Source="{Binding Source, ElementName=cntFlag}" DestinationFormat="Gray8"/>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Image.Style>

注意:评论 Style.Trigger 部分使代码工作,所以问题出在...

更新:响应 clemens 的帖子:我通过插入原始图像的直接链接修改了有关 FormatConvertedBitmap 方法的代码部分,留下作为触发器执行的唯一判别因素,条件 IsMatchCancelledOrPostponed 应该解决他暴露的问题。不幸的是,结果保持不变,只是这次 XAML 设计器直接检测到了错误。

修改后的代码:

<Setter.Value>
<FormatConvertedBitmap DestinationFormat="Gray8">
    <FormatConvertedBitmap.Source>
        <Binding Path="MatchData.Country_Id" Converter="{StaticResource stringToBitmapImageConverter}" ConverterParameter="pack://application:,,,/media/images/flags/{0}.png">
            <Binding.TargetNullValue>
                <ImageSource>media/images/default/NoFlag.png</ImageSource>
            </Binding.TargetNullValue>
        </Binding>
    </FormatConvertedBitmap.Source>
</FormatConvertedBitmap></Setter.Value>

标签: c#wpfimage

解决方案


推荐阅读