Как мога динамично да създавам нови TabItems с изгледи и viewModels за TabControl в Silverlight с MVVM Light Toolkit?

Аз съм начинаещ със Silverlight и MVVM Light Toolkit и не знам как да разреша правилно следния сценарий:

Имам следните изгледи със съответните им модели на изгледи:

  • MainView, началната страница по подразбиране
  • TabControlView, изглед с един Tabcontrol, поставен в MainView...
  • AllBugsGridView, мрежа с данни с всички грешки.
  • BugDetailView, вижте къде се показват подробностите за единична грешка или може да се добави нова грешка.. (полета с данни, етикети и т.н.)

Сега целта ми е следната:
Искам да имам раздел с AllBugsGridView като съдържание. (Няма проблем) Сега, когато потребител щракне два пъти върху елемент в мрежата с данни, той трябва да създаде нов tabItem с bugDetailView вътре, показващ подробностите за Grid Item. Би трябвало да е възможно да има толкова отворени раздели, колкото потребителят иска.

Освен това потребителят може да добави нов бъг върху бутон и се отваря нов раздел с празен bugDetailView.

Някой има ли подходящо решение за това. Не знам как мога динамично да създавам нови изгледи и ViewModels и да ги свържа заедно.

Благодаря ви много за отговорите.

С Най-Добри Пожелания

Ханс


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 към вашата колекция или да премахнете, ако е необходимо. Това позволява на ViewModels да виждат само себе си, а не изгледите. За страната на изгледа отвъд обвързването на източника към колекцията вие също задавате изгледите и ViewModels като двойки шаблон за данни и украса...

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