我正在尝试创建类似于MDI选项卡界面的东西,因此我在左侧有一个导航窗格(Listbox),右侧有一个ContentPresenter。
我有一个名为ShellViewModel的可绑定集合AvailAbleScreens,并且我成功地使用ListView的DataTemplate将其绑定到了该列表:
<ListView x:Name="AvailableScreens">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<BulletDecorator />
<Button x:Name="DisplayView">
<TextBlock Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
</Button>
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
现在的问题是,虽然按钮的名称设置正确,但我无法让命令触发。在MdiViewModel类中,我有以下代码来处理该按钮:
public bool CanDisplayView()
{
return true;
}
public void DisplayView()
{
MessageBox.Show("Hello");
}
所有Caliburn.Micro的示例都通过约定绑定到x:Name 属性,但是如果我删除Text =“{Binding}”,它就停止工作了,因此我怀疑这种数据绑定方式对于子模型不起作用?
无论如何,目前Shell的ViewModel非常简单:
ShellViewModel
* AvailableScreens
-MdiViewModel1
-MdiViewModel2
* CurrentActiveScreen
有没有任何想法可以使用Caliburn.Micro实现这一点?Rob Eisenberg在Twitter上建议我在进入完整的Caliburn框架之前,可能需要从Caliburn.Micro开始。