it-swarm.com.de

Wie kann ich xaml- und xaml.cs-Dateien verbinden?

Ich hatte ein VB projiziert und es mit Online-Konvertierungswerkzeugen in C # konvertiert. Nun besteht das Problem darin, dass xaml und xaml.cs nicht miteinander verbunden sind, dh sie erkennen ihre Abhängigkeiten nicht (roter Bereich in Abb.). Eigentlich sollte es wie Window1 Files (grüner Bereich im Bild) aussehen. Wie kann ich das erreichen?.

Solution Explorer

Ich versuche mich an WPF, also ist es eine Art Laie.

48
Marshal

Dies ist einfach. Versuchen Sie, vorhandene Elemente in ein Projekt einzufügen und wählen Sie die XAML-Dateien (nicht .cs usw.) in der Liste der Formate aus. In VS2010 hilft das.

68
Papa John

Wenn Sie die IDE nicht dazu bringen können (Papa Johns Post), können Sie dies tun, indem Sie die Projektdatei bearbeiten.

Diese Informationen befinden sich in der .csproj-Datei (einer XML-Datei). Sie können sie in einem Texteditor öffnen oder durch Rechtsklick darauf "Entladen" auswählen und dann öffnen. Wählen Sie "Neu laden", um sie zu laden als Projekt wieder).

Hier sind die Informationen, nach denen Sie suchen müssen. Sie müssen dann den Tag "DependentUpon" hinzufügen.

<Compile Include="TheFile.xaml.cs">
  <DependentUpon>TheFile.xaml</DependentUpon>
</Compile>
44
JMarsch

Einfachster Weg!!!

.__ Ich bin das selbe gestoßen. Ich bin rausgekommen. So bekommen Sie die .xaml.cs im Solution Explorer unter der .xaml verschachtelt:

  1. Öffnen Sie im Windows-Datei-Explorer (außerhalb von Visual Studio) den Ordner, in dem sich die erforderlichen Dateien befinden.
  2. Wählen Sie beide Dateien (.xaml und .xaml.cs) zusammen aus.
  3. Ziehen Sie es im Projektmappen-Explorer auf Ihren Projektnamen.
  4. Es ist fertig! :)
15
Hitsa

Verwenden einer Xamarin PCL-Lösung:

1) Gehen Sie in Ihren PCL-Ordner und öffnen Sie Ihre MySolution.csproj -Datei

2) Es sollten mehrere Gruppen von <ItemGroup>-Tags vorhanden sein. Einer von ihnen deklariert <EmbeddedResource>-Tags und ein anderer enthält <Compile> <DependentUpon></DependentUpon></Compile>-Gruppen von Tags. 

3) Für MyPage.xaml und MyPage.xaml.cs - Dateien, die verlinkt werden sollen, müssen Sie eine Gruppe von xmls haben, die Ihre xaml-Seite deklariert.

<EmbeddedResource Include="MyPage.xaml">
      <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
      <LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
<Compile Include="MyPage.xaml.cs">
      <DependentUpon>MyPage.xaml</DependentUpon>
</Compile>

Beachten Sie, dass Sie, wenn sich Ihre Seite in einem Ordner befindet, Folgendes angeben sollten:

<Compile Include="Views\MyPage.xaml.cs">
      <DependentUpon>MyPage.xaml</DependentUpon>
</Compile>
<EmbeddedResource Include="Views\MyPage.xaml">
      <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
      <LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>

Beachten Sie, dass dies mit OSX und Windows funktioniert

6
Harry

Basierend auf Kyle Whites Kommentar zum offiziellen Xamarin-Fehlerbericht 55591: .xaml-Dateien in der .NETStandard-Bibliothek werden zweimal im Lösungs-Explorer angezeigt , habe ich im verknüpften .NET) eine einfache Lösung für dieses Problem gefunden Standardbeispielprojekt von Oren Novotny

Fügen Sie in Ihrer Datei . Csproj Folgendes hinzu: <ItemGroup>:

<ItemGroup>
  <Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
  <EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" LogicalName="%(Filename)%(Extension)" />
</ItemGroup>

Danach werden alle xaml Dateien in der Projektstruktur automatisch im Projektmappen-Explorer angezeigt - selbst wenn Sie jemals neue xaml Dateien hinzufügen.

Wie funktioniert diese Magie?

Das Compile Element innerhalb von ItemGroup verwendet Platzhalter, um durch alle Verzeichnisse zu iterieren und nach .xaml.cs Dateien und zu suchen Markieren Sie sie als abhängig von den xaml -Dateien mit demselben Namen. Beachten Sie, dass dies nur funktioniert, weil die %(Filename) -Element-Metadaten, die für das DependentUpon -Element verwendet werden, die Dateierweiterung ganz links enthalten, die dem Namen der xaml -Datei von entspricht Konvention. Das Element EmbeddedResource enthält alle xaml -Dateien für das Projekt, sodass sie im Projektmappen-Explorer angezeigt werden, während sie als - markiert werden. Designer Dateien und die Angabe, dass das UpdateDesignTimeXaml -Ziel, das im NuGet-Paket von Xamarin.Forms definiert ist, zum Generieren von Code aus der Markup-Datei verwendet werden soll.

5
Sam del Rö

Verwenden der Xamarin Shared Code-Lösung:

1) Gehen Sie zu Ihrem Projektordner, nachdem Sie das freigegebene Projekt entladen haben

2) Suchen Sie die Projektdatei und bearbeiten Sie das Hinzufügen des DependentUpon-Tags wie in den anderen Antworten beschrieben.

3) Speichern Sie die Datei

4) Gehen Sie zurück zu Visual Studio und Sie sollten einen Dialog erhalten, in dem Sie alle neu laden oder das Projekt einfach wieder öffnen können.

2
dracosveen

Wenn Sie die geschachtelte Datei-VS-Erweiterung erhalten, können Sie dies tun, indem Sie mit der rechten Maustaste auf gleichnamige Dateien klicken und "automatisch verschachteln" wählen. 

https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting

1
Kris Coleman

In einem freigegebenen Projekt gibt es eine .shproj-Datei anstelle einer .csproj-Datei, und die Elemente und sind dort nicht vorhanden. Ich fand jedoch auch, dass es eine .projitems-Datei gibt und das Hinzufügen eines Abschnitts wie oben beschrieben dazu führte, dass die .xaml- und .cs-Dateien verknüpft wurden

1
john.gleeson

Eine noch einfachere und schnellere Lösung für Xamarin Forms-Projekte, keine Notwendigkeit, die csproj-Datei überhaupt zu berühren, sehr schnelle Lösung.

Stellen Sie sicher, dass Sie Show All Files für den Lösungs-Explorer ausgewählt haben. Möglicherweise ist er standardmäßig aktiviert.

  1. Wählen Sie alle betroffenen Dateien aus
  2. Rechtsklick> Exclude from Project
  3. Wählen Sie die gleichen Dateien erneut aus (sollte ausgeblendet werden)
  4. Rechtsklick> Include in Project

Sie sollten nun alle korrekt verschachtelt sein und alle erforderlichen Änderungen an der .csproj-Datei werden vorgenommen. 

Nach diesem Fehler kann es zu einem InitializeComponent() does not exist in the current context)-Fehler kommen. Wenn dies der Fall ist, lautet der einfache Fix ..

  • Wählen Sie alle betroffenen Artikel aus und ändern Sie Build Action von Page in Embedded Resource.
0
Bejasc