【发布时间】:2016-01-21 14:13:50
【问题描述】:
我想为 2 个不同的视图模型重用一个视图,在我的示例中是 MyEntityEditViewModel 和 MyEntityCreateViewModel。视图基本上只是一个带有Save 按钮的表单,非常常见的布局。
我创建了两个视图模型以及父视图/视图模型 (MyEntitySummaryViewModel),现在我想使用 ContentControl 定义 form 视图。
概要视图:
<ContentControl x:Name="ActiveItem" cal:View.Model="{Binding ActiveItem}" cal:View.Context="MyEntityDetailView" />
MyEntitySummaryViewModel:
public MyEntity SelectedEntity {
get { return _selectedEntity; }
set {
_selectedEntity = value;
NotifyOfPropertyChange();
ActivateItem(new MyEntityEditViewModel(_selectedEntitity));
}
}
public void Create() {
ActivateItem(new MyEntityCreateViewModel(new MyEntity()));
}
我的问题现在是 Caliburn 尝试定位“MyEntityEditView”,因为它的视图定位约定,即使我严格将 ContentControl 的上下文定义为自定义视图。有没有解决的办法?还是我在这里做错了什么?
【问题讨论】:
-
从未尝试过caliburn,但有data templates 分配视图。将相同的视图分配给两个视图模型。
-
在这种情况下不需要两个视图模型。为它创建一个视图模型或一个局部视图,然后在 createview 或 editview 上渲染该局部视图..
-
@Sinatr 谢谢,但我的基础是 CM。当没有其他解决方案时,我正在考虑围绕框架工作。 :)
-
@PankajGupta 部分浏览?在 WPF 中?好吧,我可以通过创建一个额外的视图/视图模型作为包装器在技术上“模拟”它们,但我希望有一个开销更少的解决方案。 =)
标签: c# .net wpf mvvm caliburn.micro