C# 图像未出现在listview中-仅显示文本;system.windows.media.imaging.bitmapimage”文件;

C# 图像未出现在listview中-仅显示文本;system.windows.media.imaging.bitmapimage”文件;,c#,wpf,image,listview,C#,Wpf,Image,Listview,我在WPF C#中使用listview时遇到问题。我有一个名为FaultRecords的类,它包含一个整数字段、一个位图图像和一个字符串。当我运行代码时,整数和字符串看起来很好,但图像没有。在应该是图像的列中,我只得到类型的路径——“system.windows.media.imaging.bitmapimage”。我快发疯了 这是我的密码 public void RecordNewFault() { FaultRecords myRecord = new FaultRecords(Fa

我在WPF C#中使用listview时遇到问题。我有一个名为FaultRecords的类,它包含一个整数字段、一个位图图像和一个字符串。当我运行代码时,整数和字符串看起来很好,但图像没有。在应该是图像的列中,我只得到类型的路径——“system.windows.media.imaging.bitmapimage”。我快发疯了

这是我的密码

public void RecordNewFault()
{
    FaultRecords myRecord = new FaultRecords(FaultIndex, PublicVars.SrcBmp, "Hi There!");
    lstvFaults.Items.Add(myRecord);

}

public class FaultRecords
{
    private int _faultNumber;
    public int FaultNumber
    {
        get { return _faultNumber; }
        set { _faultNumber = value; }
    }


    public BitmapImage _faultImage;
    public BitmapImage FaultImage
    {
        get { return _faultImage; }
        set { _faultImage = value; }
    }


    private string _faultDescription;
    public string FaultDescription
    {
        get { return _faultDescription; }
        set { _faultDescription = value; }
    }


    public FaultRecords(int faultNumber, BitmapImage faultImage, string faultDescription) 
    {
        FaultDescription = faultDescription;
        FaultNumber = faultNumber;
        FaultImage = faultImage;
    }
}
XAML:


如果我只是自己将位图写入listview(并删除XAML绑定)-
lstvFaults.Items.Add(PublicVars.SrcBmp)工作正常


您需要告诉ListView将内容呈现为图像而不是文本(因此它将显示类型)。

您需要使用数据模板。请参见一个简化的示例。
您还需要一个ImageSource,而不是BitmapImage!对不起的:(

您必须用一个自定义模板覆盖ListView ItemTemplate,该模板将图像绑定到图像对象。@我原以为它可以正常工作,但可惜没有。我现在使用一个类绑定到我的ListView,这很好。但是它不会在ListView中显示图像,而是显示类型。我在谈论您的另一个问题谢谢noorbakhsh-我自己已经解决了这个问题,我来这里是为了结束这个问题:-),我一改ImageSource就开始工作了。
 <ListView Height="412" HorizontalAlignment="Left" Margin="312,49,0,0"         Name="lstvFaults" VerticalAlignment="Top" Width="636" ItemsSource="{Binding}"    FontSize="12"> 
                              <ListView.View>
                    <GridView>
                            <GridViewColumn 
                                DisplayMemberBinding="{Binding Path=FaultNumber}"
                                Header="Fault No." Width="50"/>
                            <GridViewColumn 
                               DisplayMemberBinding="{Binding Path=FaultImage}"
                                Header="Photo" Width="150"/>
                        <GridViewColumn 
                               DisplayMemberBinding="{Binding Path=FaultDescription}"
                            Header="Fault Description" Width="300"/>
                    </GridView>
                    </ListView.View>