MVVM - Каков правильный трек в отношении Вложенных списков и моделей просмотра? - PullRequest
0 голосов
/ 22 февраля 2011

Вот в чем дело:

У меня есть представление GetHistoryLog, его модель представления и его модель.

У меня есть список, который указывает на ObservableCollection<ChangesetEntity>

У меня есть другое представление, специализирующееся на получении версионных элементов, так что это VersionedItemView, его модель представления и его модель.

Теперь я хочу, чтобы GetHistoryLog View получил доступ к конкретным версионным элементам в своих наборах изменений.Каждый набор изменений может иметь несколько версионных элементов.Каков наилучший способ «соединить» две модели представления?

Вот что я хочу сделать: древовидное представление, содержащее все наборы изменений и дочерние файлы, и одно представление списка, содержащее все наборы изменений,с возможностью щелкнуть набор изменений и просмотреть измененные файлы.

По сути, получить доступ к списку элементов внутри списка элементов и в то же время иметь возможность доступа к определенному индексу внутри этого списка.

Нужно ли создавать другую модель вида?Какое лучшее решение без создания хаоса в коде?

Надеюсь, я был достаточно ясен

Спасибо в Adv.!

РЕДАКТИРОВАТЬ: Кроме того, есть ли способустановить DataContext элемента управления для определенного элемента в списке, динамически?

РЕДАКТИРОВАТЬ: Попытка объяснить более четко:

HistoryLogEntryModel -> GetHistoryLogVM -> GetHistoryLogUserControl

VersionedItemLogModel -> GetVersionedItemsLogVM -> GetVersionedItemsLogUserControl

Что я хочу:

HistoryLogEntryModel + VersionedItemLogModel -> ? -> GetCompleteHistoryLogWithVersionedItemsUserControl (более короткое имя, но только для понимания)

1 Ответ

0 голосов
/ 22 февраля 2011

Исходя из вашего описания, я не думаю, что вам нужно больше ничего.У вас уже есть очень иерархический граф объектов вашего домена, который будет поддерживать родительские дочерние отношения, которые вы уже описали.

Я думаю, вам просто нужно усовершенствовать свой подход к связыванию и представлению объекта.Вот хороший пост из журнала MSDN , который может помочь вам в этом, а также совет по работе с Иерархическими шаблонами данных для использования с WPF TreeView.

Если вы хотите сделать привязку, которая динамически изменяет DataContext элемента управления на основе SelectedItem другого элемента управления (например, ListBox), вы можете использовать следующий синтаксис привязки:

DataContext="{Binding ElementName=sourceElementNameHere, Path=SelectedItem, 
    Mode=OneWay}"

Вот еще одна ссылка хорошая статья MSDN о связывании в WPF .

...