Ich verwende Visual Studio, um Xamarin.Forms auszuprobieren. Ich versuche, der Anleitung zu folgen: http://developer.xamarin.com/guides/cross-platform/xamarin-forms/xaml-for-xamarin-forms/getting_started_with_xaml/
Kurz gesagt, ich erstelle eine Xamarin.Forms-Lösung mit einer PCL und versuche dann, eine Forms XAML Page
zum PCL-Projekt hinzuzufügen .
Der Code-Behind, der erstellt wird, sieht folgendermaßen aus:
public partial class Page1 : ContentPage
{
public Page1()
{
InitializeComponent();
}
}
Das Problem hier ist, dass InitializeComponent();
es rot ist. Wenn ich versuche zu bauen, werde ich darüber informiertThe name 'InitializeComponent' does not exist in the current context
Ich habe mich nach Lösungen umgesehen und obwohl andere die gleichen Probleme hatten, funktionieren ihre Lösungen für mich nicht. Hier ist ein Vorschlag, den ich zu verwenden versucht habe: http://blog.falafel.com/xamarin-error-initializecomponent-does-not-exist-in-the-current-context/
Bitte lassen Sie mich wissen, ob Sie eine Lösung für dieses Problem haben. Vielen Dank!
Aktualisieren:
Meine PCL (wo ich auch meine XAML-Seite hinzufügen möchte) enthält:
App.cs:
public class App : Application
{
public App()
{
// The root page of your application
MainPage = new ContentPage
{
Content = new StackLayout
{
VerticalOptions = LayoutOptions.Center,
Children = {
new Label {
XAlign = TextAlignment.Center,
Text = "Welcome to Xamarin Forms!"
}
}
}
};
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
Und meine XAML-Seite:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamaTest.MyXamlPage">
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
Code-Behind:
public partial class MyXamlPage : ContentPage
{
public MyXamlPage()
{
InitializeComponent();
}
}
quelle
Antworten:
UPDATE: Dieser Fehler tritt normalerweise nicht in VS 2015 auf. Wenn dies der Fall ist, ist hier meine ursprüngliche Antwort:
Die Lösung gefunden! Klicken Sie mit der rechten Maustaste auf die XAML-Datei und wählen Sie Eigenschaften .
Sie sehen eine Eigenschaft namens Benutzerdefiniertes Werkzeug . Ändern Sie den Wert von
MSBuild:Compile
bisMSBuild:UpdateDesignTimeXaml
Dies wird das Problem lösen. Ich weiß nichts über das Downvote, aber hier ist mein Screenshot:
AKTUALISIEREN:
Es erscheint selten wieder. Wenn dies der Fall ist, öffnen Sie einfach die Xaml und den Code hinter den Dateien und speichern Sie sie. Ich weiß, es ist nicht die beste Lösung, aber es erledigt den Job.
quelle
MSBuild:Compile
Xaml und Code hinter Dateien geöffnet haben, speichern Sie diese. Ich weiß, es ist nicht die beste Lösung, aber es erledigt den Job.Ich bekomme das manchmal und hier ist die Checkliste, die sie bisher gelöst hat:
Stellen Sie sicher, dass der Namespace in .xaml und .xaml.cs übereinstimmt
Vom richtigen übergeordneten Element erben - ContentPage für eine Seite und ContentView für ein Steuerelement
Setzen Sie die Build-Aktion der .xaml-Datei auf
Embedded Resource
if im freigegebenen Projekt.quelle
Meiner Beobachtung nach sind in Visual Studio 2015 die XAML-Eigenschaften bereits standardmäßig so festgelegt, wie dies in den Antworten mit hohen Stimmen vorgeschlagen wird, insbesondere:
MSBuild:UpdateDesignTimeXaml
Embedded Resource
aber der Fehler tritt immer noch manchmal auf ... (wie in dieser anderen Frage ).
Das Bearbeiten der entsprechenden XAML-Datei und das Drücken von CTRL+ Ssollten einwandfrei funktionieren, müssen aber nicht. Eine sauberere Möglichkeit, die Ausführung von benutzerdefinierten Tools zu erzwingen, besteht darin, mit der rechten Maustaste auf die XAML-Datei zu klicken und dann auf das Kontextmenü "Benutzerdefiniertes Tool ausführen" zu klicken.
quelle
Ich habe dieses Problem getroffen. Es ist mit der Codierung von XAML-Dateien in VS verbunden. Ich benutze VS2015.
Ich habe dieses Problem wie folgt gelöst:
Öffnen Sie die Datei * .xaml im Projekt und klicken Sie auf die Schaltfläche Speichern. (In VS2015 wird die richtige Codierung angewendet.)
Öffnen Sie dann das Projekt erneut und erstellen Sie es neu. Jetzt gibt es keine Fehler.
quelle
Das Aktualisieren des XGarin.Forms NuGet-Pakets sollte den Job erledigen
quelle
Dies ist wahrscheinlich nicht Ihr Fall, aber ich hatte ein ähnliches Problem und mein Problem war xaml und Code hinter der Namensfehlanpassung. Wenn beispielsweise gemäß Ihrem Beispiel der Code hinter dem Namespace XamaTest ist (in den meisten Fällen der Name Ihrer App) und die Klasse MyXamlPage heißt, muss Ihr xaml-Klassenname XamaTest.MyXamlPage ([Namespace]. [Klassenname]) sein.
Ich war dumm, nachdem ich eine leere XAML mit Code dahinter erstellt hatte. Ich habe den Namen der Klasse in XAML geändert und diesen Fehler erhalten.
Code-Behind:
quelle
Foo.xaml.cs
aber vergessen zu ändernx:Class="XXX.Foo"
(Refatoring ist schlecht in VS)Versuchen Sie, ax: Name = "..." auf der xaml-Seite hinzuzufügen ... Nichts anderes hat bei mir funktioniert - aber nach dem Hinzufügen des x: Name-Attributs auf einigen Elementen auf der Seite verschwand der Fehler (meistens - I. bekomme es immer noch manchmal). Ich verwende den neuesten Build (1.5.0.6447) von Xamarin.Forms ...
XAML funktioniert nicht in gemeinsam genutzten Projekten - es funktioniert nur in tragbaren Projekten ...
quelle
Ich bin auf diesen Fehler gestoßen, als;
ContentPage-cs+xaml
und dasApp-cs+xaml
aus dem Projekt entfernt, ohne es tatsächlich zu löschen.Dies wurde behoben durch;
.xaml
Datei der Klasse aus, in der das Problem vorliegt.properties
.Build action
select "Embedded Resource"Custom Tool
Typ "MSBuild: UpdateDesignTimeXaml"quelle
Überprüfen Sie den Seitentext
x:Class="AppName.Page1"
. AppName muss Ihr App-Name seinquelle
Es sieht so aus, als ob die (Neu-) Generierung der
blah.xaml.g.cs
Dateien tatsächlich das Problem ist. Ich bekomme dies eine Menge in gemeinsam genutzten Projekten (weshalb ich sie nicht benutze, es sei denn, ich habe keine andere Wahl). Aus irgendeinem Grund passiert es in Xamarin Studio viel mehr als in Visual Studio. Ich versuche, XS überhaupt nicht zu verwenden.Oft wird das Entladen einer der anderen Plattformen (z. B. wenn Sie einen Droiden erstellen, ios entladen) und das Reinigen und Wiederherstellen das Problem beheben.
Sie können auch versuchen, eine
.xaml
der fehlerhaften Dateien zu öffnen und einige der xaml-Markups zu ändern (z. B. Hinzufügen oder Ändern einerx:Name
der Steuerelemente oder Ansichten). Dies erzwingt eine Neuerstellung der Datei xaml.g.cs und löst (zumindest für mich) normalerweise das Problem.Das sollte wirklich keine Sache sein.
quelle
Wenn Sie Intellisense-Fehler wie InitializeComponent auf Ihren Xamarin.Forms-Seiten erhalten, das Projekt jedoch tatsächlich erstellt und ordnungsgemäß ausgeführt wird, fügen Sie einfach eine neue Formularseite hinzu, indem Sie den Assistenten verwenden, um alle Fehler zu beheben ...
Dann können Sie diese neue Seite löschen.
quelle
Visual Studio 2013
Update 4-Umgebung und habe alle Empfehlungen ausprobiert, die ich im Web gefunden habe. Nichts hat mein Problem gelöst.Visual Studio 2015
Vorschau installiert und eine neue leere App mit dem Xamarin Forms- Projekt erstellt.Xaml
Datei hinzufügte , war alles in Ordnung und das Problem mit derInitialComponent
Methode verschwand.quelle
Ein Clean and Rebuild hat den Trick für mich getan!
quelle
Klicken Sie mit der rechten Maustaste auf * .xaml und klicken Sie auf Eigenschaften, und ändern Sie den Wert für "Benutzerdefiniertes Tool" in "MSBuild: UpdateDesignTimeXaml". Ändern Sie als nächstes die Eigenschaften für "Build-Aktion" in " Eingebettete Ressource ". Das Erstellen des Projekts funktioniert.
quelle
Sehr einfache Lösung, die für mich funktioniert hat:
Jetzt wird die Funktion InitializeComponent () ohne rote Unterstreichung angezeigt.
Hoffe das hilft jemandem.
quelle
Überprüfen Sie den Klassennamen ordnungsgemäß.
Der Klassenname sollte eine Kombination aus App-Name und Teilklassenname sein
quelle
Dieses Problem tritt auf, wenn die Lösungsprojekte auf die Version 1.4.0.0 der DLLs "Xamarin.Forms.Core", "Xamarin.Forms.Xaml" und "Xamarin.Forms.Platform" Version 1.0.0.0 verweisen.
Um es zu lösen, musste ich ein Downgrade auf Version 1.3.3.0 der DLLs durchführen, aber mit dieser Version existiert Xamarin.Forms.Platform 1.0.0.0 nicht.
quelle
Überprüfen Sie die Version des Xamarin.Forms-Pakets, auf das in Ihrem Projekt verwiesen wird.
quelle
Ich hatte ab und zu das gleiche Problem, und das habe ich getan, um es zu beheben: Wenn ich im PCL-Projekt bin, füge ich dem Projekt eine neue plattformübergreifende XAML-Seite hinzu. Das Hinzufügen einer neuen XAML-Seite dauert einige Sekunden, bis die Verweise auf "hook" vorliegen. Nachdem die neue XAML-Seite erfolgreich zum Projekt hinzugefügt wurde, werden die roten Unterstreichungen auf den XAML-Seiten (mit Problemen) gelöscht. Sobald das Problem behoben ist, lösche ich einfach die XAML-Datei, die ich gerade hinzugefügt habe. - Zusammenfassend hat das Hinzufügen einer neuen XAML-Seite und das anschließende Löschen das Problem für mich gelöst.
quelle
Ich habe gerade alle Pakete aktualisiert , funktioniert gut.
quelle
quelle
Ich hatte ein Caching-Problem, als ich auf diesen Fehler stieß.
Um dies zu beheben, deinstallieren Sie einfach die letzte Version des Xamarin.Forms-Pakets und installieren Sie eine frühere Arbeitsversion neu.
Wenn die Neuerstellung erfolgreich ist, aktualisieren Sie das Paket erneut auf die neueste Version.
quelle
Es scheint, dass dies durch viele Dinge verursacht wird. Wenn Sie all dies gelesen und noch nicht gelöst haben:
Meins wurde dadurch verursacht, dass die Lösungskonfiguration auf Release gesetzt wurde . Geändert zu Debug und Fehler behoben.
quelle
In meinem Fall war das Problem der Projektpfad. Die generierte Codedatei erhält einen Namen einschließlich des absoluten Pfads, der codiert wurde, um einen gültigen Dateinamen zu erhalten. Der Pfad war "D: \ Projekt C # \ ProjectRootFolder \ Project". Der vom Build-Tool generierte Dateiname war "Project.Droid.D_.Projekt_C_. Namespace etc." Das Verschieben des Projekts in einen Pfad wie "D: \ project \ ProjectRootFolder" hat in meinem Fall geholfen.
quelle
Ich verwende Visual Studio 2015, habe das gleiche Problem und keine der Antworten im Internet war eine vollständige Lösung. Hier erkläre ich, was bei mir funktioniert hat.
Mein primäres Ziel hier war es, die rote Fehlermeldung zu beseitigen, die immer wieder auftauchte
Grundsätzlich habe ich eine Funktion namens aufgerufen
InitializeComponent2()
, die genau das Gleiche tut wie dieseInitializeComponent()
und stattdessen den Code für buchstäblich kopiertInitializeComponent()
. Macht den Job.Es sieht so aus (und ich werde es erklären):
Fügen Sie die Funktion in die Definition jeder Ihrer Seiten (
.cs
Dateien) ein, zAußerdem müssen Sie
using Xamarin.Forms.Xaml;
oben auf jeder.cs
Seite, wo verwendetLoadFromXaml(..)
wird, einfügen.Und dann wechseln Sie natürlich
InitializeComponent()
zuInitializeComponent2()
, um die neue Funktion aufzurufen. Das heißt, Sie haben die Funktion in den gleichen Kontext wie die Seite gestellt, auf der der Fehler behoben wurde. Ich kann mir nicht vorstellen, dass der eigentlichenInitializeComponent
Funktion beim Ändern Ihres Projekts etwas hinzugefügt wird, aber das ist eine Möglichkeit. Bisher war es gut für mich.Ich habe viele Dinge ausprobiert, die Build-Aktion, den XAML-Namespace geändert, vs neu gestartet, bereinigt + neu erstellt und nach NuGet-Paket-Updates gesucht.
Grundsätzlich hat Visual Studio das Programm auf meinem Android-Gerät + Emulator kompiliert und ausgeführt, aber diese Fehlermeldung würde nicht verschwinden. Meine Lösung ist für Android, kann aber auch für iOS usw. funktionieren.
Ich bin zum Grund des Problems zurückgekehrt.
InitializeComponent()
Der eigentliche Code für diese Funktion wird in einer Datei namens<Your Project Name>.Page1.xaml.g.cs
oderPage2.xaml.g.cs
beispielsweise generiert . Es (die Datei) wird jedoch nur generiert, wenn ein bestimmtes Ereignis ausgelöst wird. Ich hatte das Glück, es zu entdecken, indem ich Text in "Custom Tool Namespace", der dieses Ereignis auslöste, für eine der xaml-Seiten (eine Datei.xaml
, die mit not endet.cs
- stellen Sie sicher, dass Sie die.xaml
Datei ausgewählt haben) eingab, Text eintippte und die Eingabetaste und drückte Die Datei wird erstellt.Dann hatte ich die großartige Idee
InitializeComponent2()
, eine Funktion zuInitializeComponent()
erstellen , die genau der gleichen entspricht, und sie in jede cs-Datei einzufügen, damit sie existiert, ohne dass.xaml.g.cs
jedes Mal generiert werden muss, wenn der Fehler behoben werden soll.quelle
Ich weiß nicht, ob dies gelöst ist, aber für mich musste ich nur die erste Zeile der XAML entfernen ("xml version =" 1.0 "encoding =" utf-8 ").
Manchmal versucht die Versionskontrolle der Quelle, den Dateityp zu identifizieren und solche Dinge hinzuzufügen.
quelle
hinzufügen
using Xamarin.Forms.Xaml
getestet auf Visual Studio 2017
quelle
App.xaml
undMainPage.xaml
-Datei der Klasse aus, in der das Problem vorliegt.MSBuild:UpdateDesignTimeXaml
"quelle
Die ultimative Lösung wäre, die Projektdatei in einem Texteditor zu bearbeiten und das Muster einfach aus einer anderen nicht widersprüchlichen Datei zu kopieren. Diese Lösung hat bei mir funktioniert. Normalerweise würden Sie nach dieser Syntax suchen:
quelle
Nur in Xaml-Seiteneigenschaften festlegen
Build Action = Embedded resource
Es funktioniert in Visual Studio 2017.
quelle