0

我有一个看起来像这样的 Document 对象:

public class Document
{
    public Title { get; set; }
    public Extension { get; set; }
    public byte[] Data { get; set; }
}

扩展名是“pdf”、“doc”、“docx”等。该文档用于在数据库中存储文档(它实际上是一个 DevExpress XPO 对象)。

我遇到的问题是,我将这些对象的列表绑定到一个 imagelistbox,它有一个关联的图标图像列表,为每种文件类型显示。如何在不将索引存储在域对象中的情况下,根据 Extension 在 imagelistbox 项上设置图像索引?

4

1 回答 1

2

在 WPF 中,我会使用 MVVM 模式来解决这个问题:UI 不会直接使用 XPO 对象,而是 ViewModel 对象会公开必要的属性,以便可以轻松地在绑定场景中使用它们。MVVM 是特定于 WPF 的,但我相信 MVP 模式非常相似,可以很容易地在 Windows 窗体中使用。因此,您可以创建一个 Presenter 对象,作为 UI 和 XPO 对象之间的适配器:

public class DocumentPresenter
{
    private Document _document;

    public DocumentPresenter(Document document)
    {
        _document = document;
    }

    public string Title
    {
        get { return _document.Title; };
        set { _document.Title = value; };
    }

    public string Extension
    {
        get { return _document.Extension; };
        set { _document.Extension = value; };
    }

    public byte[] Data
    {
        get { return _document.Data; };
        set { _document.Data = value; };
    }

    public int ImageIndex
    {
        get
        {
            // some logic to return the image index...
        }
    }

}

现在您只需将 设置DataSourceDocumentPresenter对象集合,并将 设置ImageIndexMember为“ImageIndex”

免责声明:我从未真正使用过 MVP 模式,只使用过 MVVM,所以我可能弄错了......无论如何,我猜你明白了;)

于 2009-09-24T23:58:43.373 回答