【问题标题】:Image not appearing in listview - just showing the text "system.windows.media.imaging.bitmapimage"图像未出现在列表视图中 - 仅显示文本“system.windows.media.imaging.bitmapimage”
【发布时间】:2012-10-09 00:27:26
【问题描述】:

我遇到了 WPF C# 中的列表视图问题。我有一个名为 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>

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

【问题讨论】:

  • 您必须使用将图像绑定到 Image 对象的自定义模板覆盖 ListView ItemTemplate。
  • @Blam 我以为我已经让它工作了,但可惜我没有。我现在正在使用一个类来绑定到我的列表视图,这很好用。但是它不会在列表视图中显示图像,而是显示类型。
  • 我在说你的其他问题。

标签: c# wpf image listview


【解决方案1】:

this related question

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢 noorbakhsh - 实际上我自己已经弄清楚了这一点,并来到这里解决问题 :-),一旦我更改为 ImageSource 就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2013-02-17
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多