Caliburn.micro:使用选项卡Control绑定ViewModel的两个视图

时间:2012-05-07 10:30:47

标签: caliburn.micro

我试图通过编辑Caliburn.Micro源代码包含的示例源代码Caliburn.Micro.SimpleMDI,将viewmodel的两个视图绑定到两个选项卡控件选项卡。该项目包含带有TabView的ShellViewModel和TabViewModel。我添加了一个名为TabViewDetails的View。我按如下方式编辑了ShellViewModel。

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);
    }

}

第一个标签是确定的。但是第二个标签没有显示任何内容。任何人都可以帮助解决问题吗?

1 个答案:

答案 0 :(得分: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确实在同一个视图模型上有多个视图,但我还没想到。