Как я могу динамически создавать новые TabItems с представлениями и моделями представления для TabControl в Silverlight с помощью MVVM Light Toolkit? - PullRequest
0 голосов
/ 01 сентября 2010

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

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

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

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

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

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

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

С уважением

Hans

Ответы [ 2 ]

0 голосов
/ 10 сентября 2010

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

<Window.Resources>
    <DataTemplate DataType="{x:Type VM:ChangePasswordVM}">
        <AdornerDecorator>
            <localUserControls:ChangePasswordView />
        </AdornerDecorator>
    </DataTemplate>
</Window.Resources>
0 голосов
/ 01 сентября 2010

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

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

...