有人问我转换使用MVVM模式到用户控制一个独立的WPF应用程序。 这个应用程序由一个主窗口和其他几个窗口。 不过,我想这样做,都指向我的App.xaml类,并声明如下转换器等资源时获得了一些错误:
Library project file cannot specify ApplicationDefintion element.
The project file contains a property value that is not valid.
The name "ViewModelLocator" does not exist in the namespace "clr-namespace:MapperX.ViewModels"
。
所以它看起来像错误在我ViewModelLocator旋转。
目前该项目的目录结构设置,如下所示:
顶级 - >文件夹的ViewModels - > ViewModelLocator
在App.xaml中设置像这样:
<Application x:Class="MapperX.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MapperX"
xmlns:vm="clr-namespace:MapperX.ViewModels"
StartupUri="MainWindow.xaml">
<Application.Resources>
<vm:ViewModelLocator x:Key="ViewModelLocator" />
</Application.Resources>
</Application>
而这里的一个片断ViewModelLocator
类:
namespace MapperX.ViewModels
{
/// <summary>
/// This class instantiates all the viewmodels
/// </summary>
public class ViewModelLocator
{
WpfMap map = new WpfMap();
private MainViewModel _mainViewModel;
public MainViewModel MainViewModel
{
get
{
if (_mainViewModel == null)
{
_mainViewModel = new MainViewModel(map)
}
return _mainViewModel;
}
}
private LayersViewModel _layersViewModel;
public LayersViewModel LayersViewModel
{
get
{
if (_layersViewModel == null)
{
_layersViewModel = new LayersViewModel(map)
}
return _layersViewModel;
}
}
}
}
然后,我设置DataContext
的意见.XAML像这样: DataContext="{Binding Path=MainViewModel, Source={StaticResource ViewModelLocator}}"
什么是正确的方式仍然能够使用ViewModelLocator没有App.xaml中?