Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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# 转换器返回不同的类型?_C#_Wpf_Image_Return Type_Ivalueconverter - Fatal编程技术网

C# 转换器返回不同的类型?

C# 转换器返回不同的类型?,c#,wpf,image,return-type,ivalueconverter,C#,Wpf,Image,Return Type,Ivalueconverter,我有一个列表。每个员工都有一个字节[]存储一张图片(或null)。我需要以某种方式将这个字节数组绑定到我正在使用的内容模板上的图像控件,或者如果员工没有图片,我希望显示本地jpg文件。我想到的方法是定义一个转换器,它将返回BitmapImage(GetImageFromByteArray()方法的返回类型)或字符串(文件名的路径)。这显然意味着这个方法能够返回两种类型,但如果我将返回类型指定为object,我就不会认为这是一个问题 不管怎样,这是我的简历: 并在XAML中使用,如下所示:

我有一个
列表
。每个员工都有一个字节[]存储一张图片(或null)。我需要以某种方式将这个字节数组绑定到我正在使用的内容模板上的图像控件,或者如果员工没有图片,我希望显示本地jpg文件。我想到的方法是定义一个转换器,它将返回BitmapImage(GetImageFromByteArray()方法的返回类型)或字符串(文件名的路径)。这显然意味着这个方法能够返回两种类型,但如果我将返回类型指定为object,我就不会认为这是一个问题

不管怎样,这是我的简历:

并在XAML中使用,如下所示:

    <local:GuidToImageConverter x:Key="GuidToImageConverter"/>

    <local:OrientedGroupHeaderContentTemplateSelector x:Key="GroupHeaderContentTemplateSelector">
        <!-- Default templates: -->
        <local:OrientedGroupHeaderContentTemplateSelector.HorizontalMonthViewDateTemplate>
            <DataTemplate>
                <Image Width="60" Height="60" Margin="5 0 10 0" HorizontalAlignment="Left" Stretch="UniformToFill" Source="{Binding Path=Name.Id, Converter={StaticResource GuidToImageConverter}, ConverterParameter=1}" />
            </DataTemplate>
        </local:OrientedGroupHeaderContentTemplateSelector.HorizontalMonthViewDateTemplate>
    </local:OrientedGroupHeaderContentTemplateSelector>

错误:

“错误1-无法确定条件表达式的类型,因为'System.Windows.Media.Imaging.BitmapImage'和'string'之间没有隐式转换”


我知道,如果有适当的MVVM结构,这可能不是问题,但目前不可能全部更改。

将return语句更改为this以使其工作:

if(employee.Picture != null)
    return GetImageFromByteArray(employee.Picture)
return "/Resource/images/silhouette.jpg";

或者,您可以先从“默认映像”创建映像,然后再像以前一样使用return语句。

将return语句更改为此以使其正常工作:

if(employee.Picture != null)
    return GetImageFromByteArray(employee.Picture)
return "/Resource/images/silhouette.jpg";

或者你可以先从“默认图像”创建一个图像,然后像以前一样使用返回语句。

+1:你是对的,他所遇到的问题与WPF或转换器无关。“或者你可以先从“默认图像”创建一个图像,然后像以前一样使用返回语句。”没有想到这一点。谢谢。不过,我会尝试按照您首先建议的方式重新构造return语句。在我看来,让方法返回特定类型总是最好的(当然,如果可能的话)。当然是使用转换器,因为您知道您希望从转换中返回什么。:)如果我的答案解决了您的问题,您可以将您的问题标记为已回答。:)不管怎么说,我不知道:很高兴我能帮上忙+1:你说得对,他遇到的问题与WPF或转换器无关。“或者你可以先从‘默认图像’创建一个图像,然后像以前一样使用return语句。”我没有想到这一点。谢谢。不过,我会尝试按照您首先建议的方式重新构造return语句。在我看来,让方法返回特定类型总是最好的(当然,如果可能的话)。当然是使用转换器,因为您知道您希望从转换中返回什么。:)如果我的答案解决了您的问题,您可以将您的问题标记为已回答。:)不管怎么说,我不知道:很高兴我能帮上忙!