C# 实现IValueConverter将字符串转换为图像
我目前正在尝试在Windows 8应用程序中显示图像。我有一个方法,它用许多图像路径填充C# 实现IValueConverter将字符串转换为图像,c#,windows,xaml,converter,ivalueconverter,C#,Windows,Xaml,Converter,Ivalueconverter,我目前正在尝试在Windows 8应用程序中显示图像。我有一个方法,它用许多图像路径填充List类型的属性。我希望在屏幕上显示这些图像 因此,我实现了一个从字符串到图像的转换器。但是,我得到了以下错误: 命名空间中不存在名称“StringToImageConverter” “使用:TestApp.Converters” “TestApp.Converters.StringToImageConverter”未实现 接口成员 'Windows.UI.Xaml.Data.IValueConverte
List
类型的属性。我希望在屏幕上显示这些图像
因此,我实现了一个从字符串到图像的转换器。但是,我得到了以下错误:
- 命名空间中不存在名称“StringToImageConverter” “使用:TestApp.Converters”
- “TestApp.Converters.StringToImageConverter”未实现 接口成员 'Windows.UI.Xaml.Data.IValueConverter.ConvertBack(对象, System.Type、object、string)'
- “TestApp.Converters.StringToImageConverter”未实现 接口成员 'Windows.UI.Xaml.Data.IValueConverter.Convert(对象、系统、类型、, 对象,字符串)'
namespace TestApp.Converters
{
public sealed class StringToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
try
{
return new BitmapImage(new Uri((string)value));
}
catch
{
return new BitmapImage();
}
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
从我的XAML文件:
<common:LayoutAwarePage
...
xmlns:converters="using:TestApp.Converters"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Page.Resources>
<converters:StringToImageConverter x:Key="StringToImageConverter"> </converters:StringToImageConverter>
</Page.Resources>
...
<ItemsControl ItemsSource="{Binding Path=test}" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="4"
HorizontalContentAlignment="Stretch">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Converter={StaticResource StringToImageConverter}}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
...
...
...
这是否适用于在Windows 8应用程序中显示我的图像?图像路径的列表
称为test
,位于xaml文件的代码隐藏中
非常感谢您在这方面提供的所有帮助:)显然,iValueConverter有两种类型:
Windows.UI.Xaml.Data.IValueConverter
System.Windows.Data.IValueConverter
听起来您的框架期待前者,而您正在实现后者
您可能还需要更改以下内容:
xmlns:converters="using:TestApp.Converters"
为此:
xmlns:converters="clr-namespace:TestApp.Converters"
Windows.UI.Xaml.Data.IValueConverter
要求最后一个参数是字符串,而不是CultureInfo
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:p="clr-namespace:System;assembly=mscorlib"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Entities="clr-namespace:Entities;assembly=Entities"
mc:Ignorable="d"
x:Name="XXXXX"
x:Class="AAAA.XXXXX" Title="Seciones" Height="644.305" Width="909.579"
xmlns:c="clr-namespace:AAAA">
<Window.Resources>
<c:StringToImageConverter x:Key="stringToImageConverter"/>
</Window.Resources>
.....
</Window>
.....
这些是编译时错误,还是运行时错误?@m-y如果我没有收到这些错误,我会的。@JLRishe这些是编译时错误:)谢谢。我现在已经更改了它,现在只得到第一个错误:名称“StringToImageConverter”在名称空间“using:TestApp.Converters”中不存在。谢谢。我现在已经更改了它,现在只收到第一个错误:“using:TestApp.Converters”命名空间中不存在名称“StringToImageConverter”。添加了其他建议。通过导航到包含隐藏的.suo文件的文件夹并将其删除/重建项目,该问题实际上得到了解决。感谢您的回复:)