如果ViewModel需要参数,如何在设计时绑定View和ViewModel

时间:2016-05-22 13:53:06

标签: wpf xaml mvvm caliburn.micro

我正在使用Caliburn.Micro框架。 在其documentation page上,据说:

你必须设置一个Desinger-DataContext并告诉CM在你的视图XAML中启用它的魔力:

 <Window 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:vm="clr-namespace:CaliburnDesignTimeData.ViewModels"
    xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro.Platform"
    mc:Ignorable="d" 
    d:DataContext="{d:DesignInstance Type=vm:MainPageViewModel, IsDesignTimeCreatable=True}"
    cal:Bind.AtDesignTime="True">

为此,ViewModel必须具有默认构造函数。如果这不合适,您还可以使用ViewModelLocator进行设计时ViewModel的创建。

我希望使用参数创建我的ViewModel。我如何使用ViewModelLocator?

1 个答案:

答案 0 :(得分:0)

这是一篇关于Caliburn.Micro设计时间支持的好文章。 https://spin.atomicobject.com/2015/10/19/caliburn-micro-design-time/

基本上,您将ViewModel实例绑定到带有ViewModelLocator的d:DataContext(实现并用作转换器),通过Caliburn的内置SimpleContainer实例化ViewModels。这样您就可以使用容器设置依赖项,只需使用IoC.Get()创建视图模型的实例,然后在IValueConverter.Convert()方法中返回它。