我想绑定我的ShellViewModel
中的IScreens列表 ...
public ObservableCollection<IScreen> RightWindowCommands
{
get
{
return this.rightWindowCommands;
}
set
{
this.rightWindowCommands = value;
this.NotifyOfPropertyChange(() => this.RightWindowCommands);
}
}
...
并使用Mahapps.Metro窗口中的屏幕列表作为WindowCommands
<controls:MetroWindow.RightWindowCommands>
<controls:WindowCommands ItemsSource="{Binding RightWindowCommands}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl cal:View.Model="{Binding .}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</controls:WindowCommands>
</controls:MetroWindow.RightWindowCommands>
它似乎不能以这种方式工作(IScreen作为文本而不是解析视图打印出来)但是如果我将它放入ListBox而不是窗口本身内的MetroWindow.WindowCommands,它就可以工作。似乎Caliburn.Micro没有搜索这个可视树。
有关如何强制校准解析此问题的任何建议吗?
更新
Log:Debug:指定XML'id'和'name' - 使用生成的对象名称[Shells.MyViewModel#3FB40AD] 日志:信息:未应用操作约定:get_Session没有可操作的元素。 日志:信息:未应用操作约定:get_Session没有可操作的元素。 日志:信息:未应用操作约定:句柄没有可操作的元素。 ...
但没有解决无法解决视图或尝试解析视图的问题。
答案 0 :(得分:0)
我使用 ContentControl 而不是使用 DataTemplate ,使用 ContentControl 解决了问题(即使看起来更加分离)。 DataTemplate 在ContentControl的内容中使用时起作用:
<controls:MetroWindow.RightWindowCommands>
<controls:WindowCommands>
<controls:MetroContentControl cal:View.Model="{Binding MySeparateViewModel}" />
</controls:WindowCommands>
</controls:MetroWindow.RightWindowCommands>
cal:View.Model
查看我的 ShellViewModel 的属性。
如果其他人有同样的问题要解决,希望这会有所帮助。