在绑定到模型对象集合时,Caliburn Micro是否可以在视图和模型之间注入ViewModel对象?
例如,如果我的IShellViewModel
具有以下属性:
IEnumerable<Foo> Foos { get; set; }
和ShellView.xaml中的ListBox
<ListBox x:Name="Foos"/>
哪个会使用FooView呈现列表框项目。 Caliburn可以为View绑定一个IEnumerable的集合吗?或者我必须在原始模型的IEnumerable旁边创建一个IEnumerable的并行集合。
答案 0 :(得分:1)
我不太确定你在问什么,当你说'哪个会使用FooView渲染列表框项'时,你的意思是你有1个视图呈现所有项目,或每个项目的视图?
如果是后者,那么Caliburn.Micro有一个约定,如果你有一组视图模型(例如IEnumerable<FooViewModel>
)绑定到ItemsControl
,那么它将搜索{{1对于每个项目,并自动将定位的视图绑定到该项目的视图模型。
如果你问Caliburn.Micro是否可以从你的模型类型中自动生成ViewModel类型,那么没有。它如何知道要暴露的属性?通常,视图模型会重塑并增强模型的功能,包括特定于特定UI技术的表示逻辑。