62 votes

Comment connecter les fichiers xaml et xaml.cs ?

J'avais un projet VB et je l'ai converti en C# à l'aide d'outils de conversion en ligne. Maintenant le problème est xaml y xaml.cs ne sont pas connectés les uns aux autres, c'est-à-dire qu'ils ne reconnaissent pas leurs dépendances (zone rouge sur la figure). En fait, cela devrait ressembler aux fichiers de Window1 (zone verte dans l'image).

Solution Explorer

Je m'essaie à WPF, c'est donc une question de profane.

82voto

Papa John Points 511

C'est simple, essayez d'ajouter dans le projet des éléments existants et sélectionnez les fichiers XAML (pas .cs, etc.) dans la liste des formats. Dans VS2010, cela fonctionne.

57voto

JMarsch Points 9814

Si vous n'arrivez pas à le faire avec l'IDE (article de Papa John), vous pouvez le faire en éditant le fichier du projet.

Ces informations se trouvent dans le fichier .csproj (qui est un fichier XML - vous pouvez l'ouvrir dans un éditeur de texte, ou en faisant un clic droit dessus, en choisissant "décharger", puis en l'ouvrant - choisissez recharger pour le charger à nouveau en tant que projet).

Voici les informations à rechercher, vous devez ajouter la balise "DependentUpon".

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

29voto

Hitsa Points 389

La méthode la plus simple !!!

J'ai rencontré la même chose. J'ai trouvé la sortie. Voici comment obtenir le .xaml.cs imbriqué sous le .xaml dans l'explorateur de solutions :

  1. Dans l'explorateur de fichiers de Windows (en dehors de Visual Studio), ouvrez le dossier dans lequel se trouvent les fichiers requis.
  2. Sélectionnez les deux fichiers (.xaml et .xaml.cs) ensemble.
  3. Faites-le glisser sur le nom de votre projet dans l'explorateur de solutions.
  4. C'est fait ! :)

8voto

Harry Points 558

Utilisation d'une solution Xamarin PCL :

1) Allez dans votre dossier PCL et ouvrez votre fichier MySolution.csproj fichier

2) Il devrait y avoir plusieurs groupes de <ItemGroup> tags. L'une d'entre elles déclare <EmbeddedResource> et un autre contiendra, <Compile> <DependentUpon></DependentUpon></Compile> des groupes d'étiquettes.

3) Pour MyPage.xaml y MyPage.xaml.cs pour que les fichiers soient liés, vous devez avoir un groupe de xmls qui déclarent votre page xaml.

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

<Compile Include="MyPage.xaml.cs">
      <DependentUpon>MyPage.xaml</DependentUpon>
</Compile>

Notez que si votre page se trouve dans un dossier, vous devez le spécifier de la manière suivante :

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

Notez que cela fonctionne avec OSX et Windows

5voto

Sam del Rö Points 304

D'après le commentaire de Kyle White sur le site officiel de l'Union européenne, la Commission européenne est en train d'élaborer un plan d'action pour l'avenir. Xamarin bug report 55591 : .xaml files in .NETStandard library appear twice in solution explorer (Les fichiers .xaml dans la bibliothèque .NETStandard apparaissent deux fois dans l'explorateur de solutions) J'ai trouvé une solution simple à ce problème dans le lien suivant Exemple de projet .NET Standard par Oren Novotny

Au sein de votre .csproj ajouter ce qui suit <ItemGroup> :

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

Ensuite, tous les xaml dans la structure du projet seront automatiquement affichés dans la fenêtre de l'explorateur de solutions - même si vous ajoutez de nouveaux fichiers xaml des dossiers.

Comment fonctionne cette magie ?

En Compiler dans l'élément Groupe d'articles utilise des caractères génériques pour parcourir tous les répertoires, à la recherche de .xaml.cs et en les marquant comme dépendant de la xaml du même nom. Veuillez noter que cela ne fonctionne que parce que l'option %(Filename) utilisées pour les métadonnées de l'élément Dépendante de contient l'extension de fichier la plus à gauche, qui correspond au nom de l'élément xaml par convention. Les Ressource intégrée comprendra tous les éléments xaml au projet, afin qu'ils soient visibles dans la fenêtre de l'explorateur de solutions, tout en les marquant comme des fichiers Designer et déclarant que le UpdateDesignTimeXaml définie dans le package NuGet Xamarin.Forms doit être utilisée pour générer du code à partir du fichier de balisage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X