0

パッシブ ビュー デザイン パターンを実装したいとしましょう。リストボックスを含むビューがあります(将来、リストビューなどと交換する可能性があります)。ここで、パッシブ ビューを使用して、ビューを可能な限りダムにする必要があります。選択を変更したいとしましょう。このロジックをプレゼンターに配置するため、ビュー インターフェイスにプロパティを追加して、ビューのリストボックスの SelectedIndex プロパティを取得および設定します。しかし、将来リストボックスをリストビューと交換したい場合、リストビューには SelectedIndex プロパティがないため、困っています。次に、ビューにいくつかのロジックを実装しますか (基本的に、少しばかげないようにします)。

public int SelectedIndex
{
    get
    {
        if (myListView.SelectedIndices.Count > 0)
        {
            return myListView.SelectedIndices[0];
        }
        return -1;
    }
}

または、ビューとプレゼンターの間に何らかのアダプターを配置しますか。最も論理的なアプローチは何でしょうか?

4

2 に答える 2

1

はい、できます。パッシブ ビュー、MVVM、MVC、MVP などの UI パターンは、最小限の手間で維持および拡張できる疎結合アプリケーションを取得するためにアプリケーション コア ロジックからプレゼンテーションを分離する方法に関する一般的なガイドライン (厳密な規則ではありません)です。ケースでリストビューまたはリストボックスを使用することはプレゼンテーションに固有であるため、UI とアプリケーションコアの間のこの分離を壊すことなく、プレゼンテーションにロジックを配置してこれを処理できます。

于 2013-06-18T15:25:32.193 に答える
1

もっと抽象化する必要があると思います。選択されたインデックスは、特定の UI コントロールに密接に結合されていると見なされる可能性があります。あなたが正しく指摘したように、ビューをシームレスに交換できるようにパターンが回避しようとしているもの。したがって、特定のビューの実装が抽象から具象への実際の変換を隠すことができるように、ビューには選択されたものを表すプロパティがあり、それが文字列またはより複雑なクラスであることをお勧めします。このようにして、プレゼンターは、特定の UI コントロールの仕組みではなく、自分にとって意味のあるものだけを扱います。

于 2013-06-18T20:51:37.483 に答える