0

我试图通过编辑 Caliburn.Micro 源代码中包含的示例源代码 Caliburn.Micro.SimpleMDI 将 viewmodel 的两个视图绑定到选项卡控件的两个选项卡。该项目包含 ShellViewModel 和 TabViewModel 和 TabView。我添加了一个名为 TabViewDetails 的视图。我编辑了 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);
    }

}

第一个标签是好的。但是第二个选项卡什么也没显示。有人可以帮忙找出问题吗?

4

1 回答 1

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 文档确实在同一视图模型上有多个视图部分,但我还没有弄清楚。

于 2012-05-19T16:00:57.300 回答