0

次のような Document オブジェクトがあります。

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

拡張子は「pdf」「doc」「docx」などです。このドキュメントは、ドキュメントをデータベースに格納するために使用されます (実際には DevExpress XPO オブジェクトです)。

私が抱えている問題は、これらのオブジェクトのリストを、ファイルの種類ごとに表示するアイコンのイメージ リストが関連付けられている imagelistbox にバインドしていることです。ドメイン オブジェクトにインデックスを保存せずに、拡張機能に基づいて imagelistbox アイテムに画像インデックスを設定するにはどうすればよいですか?

4

1 に答える 1

2

WPF では、この問題を解決するために MVVM パターンを使用していました。XPO オブジェクトは UI によって直接使用されず、代わりに ViewModel オブジェクトが必要なプロパティを公開して、バインディング シナリオで簡単に使用できるようにします。MVVM は WPF 固有のものですが、MVP パターンは非常に似ており、Windows フォームで簡単に使用できると思います。したがって、UI と XPO オブジェクトの間のアダプターとして機能する Presenter オブジェクトを作成できます。

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...
        }
    }

}

をオブジェクトDataSourceのコレクションに設定し、を「ImageIndex」に設定するだけです。DocumentPresenterImageIndexMember

免責事項:私は実際にMVPパターンを使用したことはなく、MVVMのみを使用したため、間違っている可能性があります...とにかく、あなたは私が推測する写真を手に入れます;)

于 2009-09-24T23:58:43.373 に答える