2012-05-07 2 views
0

Я пытаюсь связать два вида viewmodel с двумя вкладками управления вкладками, отредактировав образец исходного кода Caliburn.Micro.SimpleMDI, включенный в источник Caliburn.Micro. Этот проект содержит ShellViewModel и TabViewModel с TabView. Я добавил один вид с именем TabViewDetails. Я отредактировал ShellViewModel следующим образом.Caliburn.micro: Привязать два вида ViewModel с вкладкой Control

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive 
{ 
    int count = 1; 

    public void OpenTab() 
    { 
     TabViewModel vm = null; 
     if (Items.Count != 0) 
     { 
      vm = new TabViewModel() { DisplayName = "Detail Tab " + count++ }; 
      var secondView = new TabViewDetails(); 

      ViewModelBinder.Bind(vm, secondView , null); 


     } 
     else 
     { 
      vm = new TabViewModel() { DisplayName = "Tab " + count++ }; 
     } 

     ActivateItem(vm); 
    } 

} 

Первая вкладка ОК. Но вторая вкладка ничего не показывает. Может кто-нибудь помочь разобраться в проблеме ?.

ответ

0

Я не использовал Caliburn.Micro много, но простое решение - один вид, одна модель. Если вы измените свой код на что-то вроде:

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive { 
    int count = 1; 

    public void OpenTab() 
    { 
     Screen screen; 

     if (count != 0) 
     { 
      screen = new TabViewModel 
          { 
           DisplayName = "Tab " + _count++ 
          }; 
     } 
     else 
     { 
      screen = new TestViewModel 
          { 
           DisplayName = "Tab " + _count++ 
          }; 
     } 

     ActivateItem(screen); 
    } 
} 

где TestViewModel может быть TabViewModel

public class TestViewModel : TabViewModel 
{ 
} 

то работает нормально.

У Caliburn docs есть раздел несколько видов на одну и ту же модель просмотра, но я еще не понял этого.

Смежные вопросы