图像没有出现在列表视图中 - 只显示文本“system.windows.media.imaging.bitmapimage”

时间:2012-10-08 10:13:58

标签: c# wpf image listview

我在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 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>

如果我只是将Bitmap写入listview(并删除XAML绑定) - lstvFaults.Items.Add(PublicVars.SrcBmp);它可以正常工作。

2 个答案:

答案 0 :(得分:1)

请参阅this related question

您需要告诉ListView将内容呈现为不是Text(因此它显示的是Type),而是作为Image。

答案 1 :(得分:0)

您需要使用DataTemplate。请参阅简化示例here。 你还需要一个ImageSource而不是BitmapImage!对不起:(