Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实现IValueConverter将字符串转换为图像_C#_Windows_Xaml_Converter_Ivalueconverter - Fatal编程技术网

C# 实现IValueConverter将字符串转换为图像

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

我目前正在尝试在Windows 8应用程序中显示图像。我有一个方法,它用许多图像路径填充
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文件的文件夹并将其删除/重建项目,该问题实际上得到了解决。感谢您的回复:)