Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 不带服务定位器的ViewModels注入_.net_Wpf_Xaml_Mvvm_Win Universal App - Fatal编程技术网

.net 不带服务定位器的ViewModels注入

.net 不带服务定位器的ViewModels注入,.net,wpf,xaml,mvvm,win-universal-app,.net,Wpf,Xaml,Mvvm,Win Universal App,我个人认为服务定位器是一种反模式,但我发现在基于XAML的应用程序中,很常见看到一个“ViewModelLocator”,每个视图都从中获取其数据源 如何避免这种情况?您可以使用使用约定的MVVM框架,如Caliburn.Micro。在Caliburn中,当应用程序启动时,将ViewModel注册到DI容器。 然后,当您拥有一个TestView时,它会自动绑定到一个TestViewModel(按名称约定,框架会在DI容器中查找ViewModel,获取/创建一个实例并绑定它)

我个人认为服务定位器是一种反模式,但我发现在基于XAML的应用程序中,很常见看到一个“ViewModelLocator”,每个视图都从中获取其数据源


如何避免这种情况?

您可以使用使用约定的MVVM框架,如Caliburn.Micro。在Caliburn中,当应用程序启动时,将ViewModel注册到DI容器。 然后,当您拥有一个TestView时,它会自动绑定到一个TestViewModel(按名称约定,框架会在DI容器中查找ViewModel,获取/创建一个实例并绑定它)