Wpf 如果ViewModel需要参数,如何在设计时绑定视图和ViewModel
我用的是Caliburn.Micro框架。 在其上,据说: 您必须设置Desinger DataContext,并告诉CM在您的视图XAML中启用其魔力:Wpf 如果ViewModel需要参数,如何在设计时绑定视图和ViewModel,wpf,xaml,mvvm,caliburn.micro,Wpf,Xaml,Mvvm,Caliburn.micro,我用的是Caliburn.Micro框架。 在其上,据说: 您必须设置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-n
<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?这是一篇关于Caliburn.Micro设计时支持的好文章。
基本上,您可以使用ViewModelLocator(实现并用作转换器)通过Caliburn的内置SimpleContainer实例化ViewModels,将ViewModel实例绑定到d:DataContext。这样,您就可以使用容器设置依赖项,只需使用IoC.Get()创建视图模型的实例,并在IValueConverter.Convert()方法中返回它。我已经找到了,谢谢。您认为在ViewModel项目中定义IoC是一个好主意吗?在本文中,他实例化了一个新的SimpleContainer,并将IoC的GetInstance、GetAllInstances和generic委托重新分配给新创建的SimpleContainer的匹配方法。我相信如果您不想创建自定义的IoC,您可以在AppBootstrapper上重用已经设置好的IoC(因为它在Initialize()中实现了这一点)。