Как я могу динамически создавать новые TabItems с представлениями и viewModels для TabControl в Silverlight с помощью MVVM Light Toolkit?

Я начинаю работать с Silverlight и MVVM Light Toolkit и не знаю, как правильно решить следующий сценарий:

У меня есть следующие представления с соответствующими им моделями представления:

  • MainView, стартовая страница Deault
  • TabControlView, представление с одним элементом управления Tab, размещенным в MainView…
  • AllBugsGridView, датагрид со всеми ошибками.
  • BugDetailView, просмотр сведений об отдельной ошибке или добавление новой ошибки (поля данных, метки и т. Д.)

Теперь моя цель следующая:
Я хочу иметь элемент табуляции с AllBugsGridView в качестве содержимого. (Нет проблем) Теперь, когда пользователь делает двойной щелчок по элементу в сетке данных, он должен создать новый tabItem с bugDetailView внутри, отображающий детали элемента сетки. Должно быть возможно иметь столько открытых элементов табуляции, сколько хочет пользователь.

Далее пользователь может добавить новую ошибку поверх кнопки, и откроется новая вкладка с пустым bugDetailView.

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

Большое спасибо за ответы.

С наилучшими пожеланиями

Ганс


person user10378848    schedule 01.09.2010    source источник


Ответы (2)


Взгляните на мой образец проекта здесь. Хотя он не использует MVVM Light, его можно легко изменить для работы с ним. Основная идея состоит в том, что вкладка определяется как «регион», и у вас есть менеджер региона, который понимает, как работать с элементами управления вкладками. Затем вы просто направляете вид в регион, а все остальное берет на себя.

http://csharperimage.jeremylikness.com/2010/06/advanced-silverlight-applications-using.html

person Jeremy Likness    schedule 01.09.2010

Если вы привяжете свой источник TabControls к свойству вашей модели просмотра типа ObservableCollection из ViewModelBase, вы можете добавить новые модели просмотра в свою коллекцию или удалить при необходимости. Это позволяет ViewModels видеть только себя, а не представления. Для стороны представления помимо привязки источника к коллекции вы также устанавливаете представления и модели представления как пары табличек данных и украшений ...

<Window.Resources>
    <DataTemplate DataType="{x:Type VM:ChangePasswordVM}">
        <AdornerDecorator>
            <localUserControls:ChangePasswordView />
        </AdornerDecorator>
    </DataTemplate>
</Window.Resources>
person yllams    schedule 10.09.2010