The name "MainPageViewModel" does not exist in the namespace "clr-namespace:SmallNotes.ViewModels".

  • WP8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    The name "MainPageViewModel" does not exist in the namespace "clr-namespace:SmallNotes.ViewModels".

    Moin,

    ich schreibe zur Zeit eine kleine Windows 8-App, da bei Windows 10 die UAP bei mir nicht wollte (VS CTP). (Irgendwie fehlt mir da btw im Thread ein Tag, daher mal WP8)
    Soweit alles implementiert, nur das ViewModel macht Probleme.

    Ich habe eine MainPage.xaml in der Solution liegen und verschiedene Ordner, darunter einen für die ViewModels.
    Darin ist eine Klasse MainPageViewModel im Namespace SmallNotes.ViewModels. So, nun wollte ich dieses bei meiner Page als DataContext setzen, entweder als StaticResource über die App.xaml oder direkt. Beides funktioniert nicht.

    Meine Versuch:

    XML-Quellcode

    1. <Application
    2. x:Class="SmallNotes.App"
    3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    5. xmlns:viewModels="clr-namespace:SmallNotes.ViewModels"
    6. xmlns:local="using:SmallNotes">
    7. <Application.Resources>
    8. <viewModels:MainPageViewModel x:Key="MainViewModel"/>
    9. </Application.Resources>
    10. </Application>


    Der Fehler: "The name "MainPageViewModel" does not exist in the namespace "clr-namespace:SmallNotes.ViewModels".
    Er sagt mir auch beim URI, dass dieser Namespace nicht existiert, also habe ich mal clr-Namespace durch using ersetzt, dann geht das, allerdings mag er das MaiViewModel darin immer noch nicht finden. Dieses ist aber ganz sicher mit diesem Namespace dort deklariert.

    stackoverflow.com/questions/5470158/undefined-clr-namespace
    Das habe ich gefunden und auch schon einiges probiert, also auf x86 umstellen usw., half nichts. Ein Kommentar sagt, das liege an VS, aber was soll ich dann tun? Das wäre ja ziemlich blöd, da somit keiner Apps schreiben könnte, wenn man MVVM verwenden will.

    Das ist eig. so alles, was ich dazu sagen kann. Deswegen verwundert mich das auch, weil der Rest eig. stimmt.
    Hat jemand eine Idee? Vielleicht @VincentTB oder @ErfinderDesRades?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trade“ ()

    Du könntest mal gucken, ob ​xmlns:d="http://schemas.microsoft.com/expression/blend/2008" das checkt. Also einfach mal:

    XML-Quellcode

    1. ​ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    2. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    3. mc:Ignorable="d"

    und dann

    XML-Quellcode

    1. ​d:DataContext="{d:DesignInstance model:DasViewModel}"

    versuchen. Da zeigt er dann zwar häufig auch einen Fehler an, aber du kannst vernünftig programmieren. Das ViewModel kannst du dann in dem Konstruktor setzen.
    Mfg
    Vincent

    Danke sehr, mit etwas probieren hat es somit geklappt. :)
    Zur Erläuterung: Was genau macht das jetzt (anders)? Und ja, da gibt es kurz einen Fehler, der sich mit einem Build jedoch beheben lässt.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    So genau kenne ich mich damit jetzt nicht aus. Aber es hängt nicht direkt mit der Plattform zusammen, sondern mit Blend. Somit werden, wenn es da einen Fehler bei Windows Apps gibt, meines Wissens nach nicht auf diese Funktionen zugegriffen. Dies ist ja ein Attribut, welches eigentlich nur für den Designer da ist, denn es wird nicht mit kompiliert und gaukelt XAML nur vor, dass da ein ViewModel von dem Typ ist. Deshalb müssen wir dieses ja auch noch im CodeBehind setzen, damit es funktioniert. Also: Andere Funktion -> anderes Verhalten
    Mfg
    Vincent

    Achso ok, im Endeffekt wird das erst im Codebehind wirklich gesetzt und das im Designer ist nur da, damit der halt glaubt, es existiert und kompiliert. Das ist ja 'ne nette Idee.
    Vielen Dank. :)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: