c# - 为什么将 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 - C中的环形缓冲区/循环数组实现
- latex - 如何在子图乳胶环境中的数字之间留出空间?
- node.js - Socket io 在 docker run 上返回 404 Not Found
- javascript - 我的 Vue 库在发布后无法正常工作
- java - How do I import java.sql.* using JDK 10.0.2 and Eclipse?
- raspberry-pi3 - 覆盆子白板
- ios - 是否可以使用可达性检查 WiFi 是否已连接但 Swift 中没有互联网连接?
- visibility - 推进 - 隐藏列
- c# - 我可以从 C# 中执行 R 代码文件吗?
- bash - bash 别名使用“别名”前缀导入