Мастер / деталь в отдельных моделях просмотра? - PullRequest
1 голос
/ 02 июля 2010

Я занимаюсь проектированием основного / подробного вида.В настоящее время у меня есть пользовательский элемент управления (подробно) в моем главном представлении, и оба имеют свой собственный VM.С одной стороны, я думаю, что должен быть только один vm, потому что детали никогда не будут существовать без мастера.Также было бы проще обрабатывать процесс CRUD в одном виртуальном узле из-за их тесной зависимости друг от друга.С другой стороны, они являются отдельными объектами, и наличие двух меньших vm против одного большого кажется более управляемым.Есть мысли?

Ответы [ 3 ]

2 голосов
/ 02 июля 2010

Для данного сценария я бы создал два разных представления и привязал его к одной и той же модели представления.

Если вы лениво загружаете вещи из базы данных, возможно, будет удобнее реализовать две модели представления.

0 голосов
/ 03 апреля 2012

У одного из моих приложений такой сценарий.У меня есть мастер 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();
    }
}
0 голосов
/ 02 июля 2010

Модель вида - это модель вида.Если у вас есть два представления, у каждого есть модель представления.Если представления взаимозависимы, модели тоже будут.

Мудрость наличия отдельной модели представления для элементов детализации становится очевидной по мере роста сложности элементов детализации.Для простого примера представьте гиперссылку, представляющую команду в подробном представлении, которая должна быть включена, если подробный элемент соответствует каким-либо критериям.Куда вы собираетесь поместить источник привязки команды гиперссылки?

...