我使用Caliburn.Micro并希望为视图的设计时可视化添加其他类型映射。
我有以下结构: SomeNameSpace.SomeViewModel SomeNamespace.SomeView
和设计时支持(同一组装) SomeNamespace.DesignTime.DesignSomeViewModel(或DesignTimeSomeViewModel)
我想实现Caliburn.Micro(在设计时)将DesignSomeViewModel解析为SomeViewModel并从命名空间解析.DesignTime。
然而......我还没有成功。
我在引导程序中尝试了以下内容:
protected override void Configure()
{
// ...
ViewLocator.AddDefaultTypeMapping("Design");
// not good, want something generic (but even this did not work)
ViewLocator.AddNamespaceMapping("*.DesignTime", "Some.Library");
ViewLocator.NameTransformer.AddRule("Design", string.Empty);
ViewLocator.NameTransformer.AddRule(".DesignTime", string.Empty);
这样我就可以引用designTime视图模型:
cal:Bind.AtDesignTime="True" d:DataContext="{d:DesignInstance Type=designTime:DesignSomeViewModel,
IsDesignTimeCreatable = TRUE}
...并像这样创建DesignTimeViewModels:
public class DesignContainerViewModel : Screen, IContainerViewModel
{
public DesignContainerViewModel()
{
this.Text = "DesignTime Container";
this.Child = new DesignChildViewModel();
}
public string Text { get; set; }
public IScreen Child { get; set; }
}