我在我的应用程序中定义了一个应用程序资源,它存储了我的ViewModel,其中包含一个导航元素来导航页面。这在visual studio的xaml编辑器中运行良好,因为所有数据绑定都在那里工作。但是,当我尝试在调试器中运行应用程序时,它会收到一条带有消息Cannot find source with the name ViewModelLocator.
的异常。有人知道出了什么问题吗?
我在App.xaml中定义了一个本地资源,如下所示:
<Application.Resources>
<viewmodel:ViewModelLocator x:Key="ViewModelLocator"/>
</Application.Resources>
我试着这样使用:
<Page x:Class="QardPrint.PageEmployeesList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:QardPrint"
xmlns:viewmodel="clr-namespace:QardPrint.ViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="PageEmployeesList"
DataContext="{Binding EmployeesListViewModel, Source={StaticResource ViewModelLocator}}">
我的ViewModelLocator类看起来像这样
public class ViewModelLocator
{
public EmployeesListViewModel EmployeesListViewModel => new EmployeesListViewModel(App.Navigation);
}
答案 0 :(得分:0)
尝试使用ResourceDictionary
:
<强> App.xaml中:强>
<Application xmlns:viewmodel="clr-namespace:QardPrint.ViewModel">
<Application.Resources>
<ResourceDictionary>
<viewmodel:ViewModelLocator x:Key="Locator" />
<强> QardPrint.PageEmployeesLis.Xaml:强>
<Page x:Class="QardPrint.PageEmployeesList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:QardPrint"
xmlns:viewmodel="clr-namespace:QardPrint.ViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="PageEmployeesList"
DataContext="{Binding EmployeesListViewModel, Source={StaticResource Locator}}">
答案 1 :(得分:0)
我发现了问题。它是在App.xaml中我删除了启动参数。再次添加后,问题就解决了。 我这样做是因为我在app.cs.的启动功能中创建了另一个窗口。但这可能是糟糕的设计,所以要弄清楚如何做得更好。