我试图通过编辑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);
}
}
第一个标签是确定的。但是第二个标签没有显示任何内容。任何人都可以帮助解决问题吗?
答案 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确实在同一个视图模型上有多个视图,但我还没想到。