c# - 带有转换器的复选框图像
问题描述
有人可以帮助以下 WPF - 我在将已知图像名称绑定到转换器时遇到问题,以便能够让复选框显示图像而不是复选框。
这是我的静态资源:
<converter:FilePathToImage x:Key="FileNameToImage" />
<system:String x:Key="ToggledOFFImagePath">ToggledOFF.png</system:String>
<system:String x:Key="ToggledONImagePath">ToggledON.png</system:String>
这是我的复选框样式:
<Style TargetType="{x:Type CheckBox}" x:Key="partRRCheckbox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<Image x:Name="checkboxImage" Source="{Binding Path={StaticResource ToggledOFFImagePath}, Converter={StaticResource FileNameToImage}}" Width="50" Height="50"/>
<ContentPresenter/>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="checkboxImage" Property="Source" Value="{Binding Path={StaticResource ToggledONImagePath}, Converter={StaticResource FileNameToImage}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
该类型的对象System.String
不能应用于需要该类型的属性System.Windows.PropertyPath
。
这是我的转换器:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
BitmapImage bitmapImage = null;
if (value is string)
{
string name = (string)value;
bitmapImage = ImageConverters.FileToBitmapImage(name.TrimEnd());
}
return bitmapImage;
}
我已经尝试了很多不同的方法来让它工作,但我尝试过的任何东西似乎都无法显示图像。问题是,我需要能够将图像与我的所有其他图像放在同一个文件夹中,这些图像属于不同的项目(资源项目)。我已经使用它绑定到项目中的其他东西,但没有使用静态资源。使用作为我绑定对象的一部分的字符串。这是我第一次使用字符串的静态资源。
解决方案
a 上的Path
属性Binding
用于指定绑定对象中的属性路径。
每个绑定通常具有以下四个组件:绑定目标对象、目标属性、绑定源和绑定源中要使用的值的路径。
如果您使用静态资源进行绑定,请使用Source
,例如:
{Binding Source={StaticResource ToggledONImagePath}, Converter={StaticResource FileNameToImage}}
如果你像这样调整你的风格,它应该可以工作:
<Style TargetType="{x:Type CheckBox}" x:Key="partRRCheckbox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<Image x:Name="checkboxImage" Source="{Binding Source={StaticResource ToggledOFFImagePath}, Converter={StaticResource FileNameToImage}}" Width="50" Height="50"/>
<ContentPresenter/>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="checkboxImage" Property="Source" Value="{Binding Source={StaticResource ToggledONImagePath}, Converter={StaticResource FileNameToImage}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
推荐阅读
- ejb - 关于自由的 EJB 查找问题
- java - 虽然我在服务器中启用了 Java,但我遇到了 java 路径问题
- vba - 尝试根据组合框选择自动填写 Access 文本框时出现问题
- python - 将python脚本中的变量导入另一个脚本会引发变量未定义的错误
- python - 如何在 Plotly 中循环创建子图,每个子图上都有几条曲线?
- reactjs - 在reactjs中更改路径名后如何将登录数据更新为状态
- django - 如何在 Heroku 本地运行 Django Web 应用程序
- javascript - 输入范围 - 突出显示所选部分
- spring-boot - @Valid 不适用于弹簧休息控制器
- python - 拆分但保留基于多个分隔符的连续字符串(python)