Caliburn Micro Conventions:如何删除" DesignTime"来自ViewModel名称和名称空间

时间:2016-08-24 19:06:42

标签: c# wpf caliburn.micro design-time

我使用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; }
}

0 个答案:

没有答案