1

マスター/詳細ビューを設計しています。現在、メイン ビューにユーザー コントロール (詳細) があり、両方に独自の vm があります。一方では、詳細はマスターなしでは存在しないため、vm は 1 つだけにする必要があると思います。また、相互に密接に依存しているため、1 つの VM で CRUD プロセスを処理する方が簡単です。一方、それらは別個のエンティティであり、2 つの小さい vm と 1 つの大きい vm を持つ方が管理しやすいようです。何かご意見は?

4

3 に答える 3

2

特定のシナリオでは、2 つの異なるビューを作成し、それを同じビューモデルにバインドします。

データベースから遅延ロードする場合は、2 つのビューモデルを実装する方がクリーンな場合があります。

于 2010-07-02T14:37:56.067 に答える
0

ビューモデルはビューのモデルです。2 つのビューがある場合、それぞれにビュー モデルがあります。ビューが相互依存している場合、モデルも相互依存しています。

詳細アイテムの複雑さが増すにつれて、詳細アイテム用に別のビュー モデルを持つことの賢明さが明らかになります。簡単な例として、詳細ビューにコマンドを提示するハイパーリンクを想像してください。これは、詳細アイテムが何らかの基準を満たしている場合に有効にする必要があります。ハイパーリンクのコマンド バインドのソースをどこに置くつもりですか?

于 2010-07-02T16:59:43.083 に答える
0

私のアプリの 1 つにこのシナリオがあります。項目を含むマスター ListView と、選択した項目に関する拡張情報を含む詳細ビューがあります。詳細ビューには独自のビュー モデルがあります。

コンバーターを使用して、詳細ビュー DataContext をマスターからの SelectedItem にバインドしました。

<view:MyDetailView Grid.Row="2"
                   DataContext="{Binding Path=SelectedItem, ElementName=masterList, Converter={StaticResource EntityToDetailViewModelConverter}}">            
</view:FontDetailView>

そしてコンバーター、

class EntityToDetailViewModelConverter: System.Windows.Data.IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        MyEntity entity = value as MyEntity;
        return new ViewModel.MyDetailViewModel(entity);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}
于 2012-04-03T08:10:49.557 に答える