2017-08-03 2 views
2

Ich definiere eine Anwendungsressource in meiner App, die meine ViewModels mit einem Navigationselement zum Navigieren in Seiten speichert. Dies funktioniert im XAML-Editor von Visual Studio, da alle Datenbindungen dort arbeiten. Wenn ich jedoch versuche, die Anwendung im Debugger auszuführen, wird eine Exception mit der Nachricht Cannot find source with the name ViewModelLocator. angezeigt. Weiß jemand, was schief läuft?WPF Lokale Ressource kann bei der Ausführung nicht gefunden werden

Ich habe eine lokale in meinem App.xaml wie folgt definierte Ressource:

<Application.Resources> 
    <viewmodel:ViewModelLocator x:Key="ViewModelLocator"/> 
</Application.Resources> 

die ich versuche, so zu verwenden:

<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}}"> 

Meine ViewModelLocator Klasse wie dieses

public class ViewModelLocator 
{ 
    public EmployeesListViewModel EmployeesListViewModel => new EmployeesListViewModel(App.Navigation); 
} 
sieht
+0

Sind der 'ViewModelLocator' und der' App.xaml' in derselben Assembly? –

+0

Ja, sie sind beide in der gleichen Baugruppe. Sie befinden sich in einem anderen Namespace, aber ich habe auch versucht, sie in den gleichen Namespace zu stellen, und die Exception tauchte immer noch auf. –

Antwort

0

Ich fand das Problem. Es war in der App.xaml Ich habe den Startparameter gelöscht. Nach erneutem Hinzufügen wurde das Problem gelöst. Ich tat dies, weil ich ein anderes Fenster in der Startfunktion von app.cs gemacht habe. Aber das ist wahrscheinlich ein schlechtes Design, also werde ich herausfinden, wie es besser geht.

0

Versuchen Sie zu verwenden 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}}"> 
+0

Danke für Ihre Antwort. Leider bekomme ich den gleichen Fehler. –

+0

Haben Sie versucht, die Lösung zu reinigen und neu aufzubauen? –

+0

versuchen, verwenden Sie die Lösung von diesem: https://Stackoverflow.com/a/19012976/4772806 –

Verwandte Themen