2011-12-15 14 views
43

Tengo un VB proyectado y lo convertí en C# usando herramientas de conversión en línea. Ahora el problema es xaml y el archivo xaml.cs no se conectan entre sí, es decir, no reconocen sus dependencias (área roja en la figura). En realidad, debería aparecer como Window1 Files (Área verde en la imagen). ¿Cómo puedo lograr esto?Cómo puedo conectar los archivos xaml y xaml.cs

Solution Explorer

Estoy intentando mi manos en WPF así que puede ser una especie de pregunta laico.

Respuesta

61

Esto es simple, intente agregar elementos existentes del proyecto y seleccione los archivos XAML (no .cs, etc.) en la lista de formatos. En VS2010 eso ayuda.

+0

Gracias. Funciona :) – Marshal

+10

Tenga en cuenta que en VS 2015 (y probablemente versiones anteriores) que tiene que agregar los archivos '.xaml' de a uno por vez. Si tiene múltiples y seleccione todo, entonces no agrega los archivos '.xaml.cs' = ( –

+0

La respuesta de Hitesh.P admite la adición de varios archivos a la vez. – David

35

Si no puede obtener el IDE para hacerlo (publicación de Papa John's), puede hacerlo editando el archivo del proyecto.

Esa información está en el archivo .csproj (que es un archivo XML; puede abrirlo en un editor de texto o haciendo clic derecho sobre él, seleccionando "descargar" y luego abriéndolo), elija volver a cargar cargarlo nuevamente como proyecto).

Aquí está la información que debe buscar, deberá agregar la etiqueta "DependentUpon".

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

¿El formato del archivo del proyecto depende? IDE? En caso afirmativo, hay muchos formatos diferentes para conectar xaml al código. –

+0

La captura de pantalla anterior era de VS 2010 (se puede decir por el estilo del árbol), así que usé un recorte de un proyecto de 2010. Si necesita una versión diferente, la manera más fácil de ver lo que necesita es crear un pequeño proyecto de prueba con 1 archivo xaml, y luego abrir el archivo del proyecto y ver qué hizo VS. Los archivos deberían ser bastante similares para VS 2005 y posteriores (son solo archivos de MSBuild.) 2003 y el VS.Net original usó un formato de archivo diferente. – JMarsch

+0

Tuve este problema en Xamarin Studio (OS X) y esto lo solucionó. ¡Gracias! – frijj2k

15

Me encontré con lo mismo. Tengo la salida. Aquí es cómo conseguir los .xaml.cs anidadas en el .xaml en el Explorador de soluciones:

  1. En Windows File Explorer (fuera de Visual Studio), abra la carpeta donde los archivos necesarios son.
  2. Seleccione los dos archivos (.xaml y .xaml.cs) juntos.
  3. Arrástrelo al nombre de su proyecto en el Explorador de soluciones.
  4. ¡Hecho! :)
+0

está bien. Entonces, ¿cuál es la razón detrás de no encontrarlo? es útil. – Hitsa00

+1

Esto funciona y fue muy útil para mí, lo que permite un mayor control que la respuesta anterior. No entiendo el voto abajo. – jomalden

+1

Lol esta respuesta en realidad admite varios archivos a diferencia de los 41 votaciones ascendentes y la respuesta aceptada ... – David

5

utilizando una solución de PCL Xamarin:

1) Ir a la carpeta PCL y abrir su archivo MySolution.csproj

2) Debe haber varios grupos de <ItemGroup> etiquetas. Uno de ellos declara <EmbeddedResource> etiquetas y otro contendrá, <Compile> <DependentUpon></DependentUpon></Compile> grupos de etiquetas.

3) Para MyPage.xaml y MyPage.xaml.cs ficheros a fusionar, debe tener un grupo de XMLs que declaran su página XAML.

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

Tenga en cuenta que si la página está en una carpeta que debe especificar que de este modo:

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

Tenga en cuenta que esto funciona con OSX y Windows

2

Usando la solución de código compartido Xamarin:

1) Ir a proyectar carpeta después de descargar el proyecto compartido

2) Encontrar el archivo y editar projitems que la adición de la etiqueta DependentUpon como se describe en otras respuestas anteriores.

3) Guarde el archivo

4) Volver a Visual Studio y usted debe obtener un cuadro de diálogo que le permite volver a cargar todos o sólo a abrir el proyecto.

2

Basado en el comentario de Kyle Blanco sobre la Xamarin bug report 55591: .xaml files in .NETStandard library appear twice in solution explorer oficial, he encontrado una solución simple a este problema dentro del .NET Standard sample project by Oren Novotny ligado

dentro de su archivo .csproj, añada el siguiente <ItemGroup>:

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

A continuación, todos los archivos xaml dentro de la estructura del proyecto se mostrarán en la ventana Explorador de soluciones automáticamente incluso si alguna vez agrega nuevos archivos xaml.

¿Cómo funciona esta magia?

El elemento Compilar dentro del ItemGroup es el uso de comodines para iterar a través de todos los directorios, búsqueda de archivos .xaml.cs y marcándolos como dependiente de las xaml archivos del mismo nombre. Tenga en cuenta que esto solo funciona porque los metadatos del elemento %(Filename) utilizados para el elemento DependentUpon DependentUpon contienen la extensión de archivo situada más a la izquierda, que coincide con el nombre del archivo xaml por convención. El elemento EmbeddedResource incluirá todos los archivos xaml al proyecto, de manera que sean visibles dentro de la ventana Explorador de soluciones, mientras que marcándolos como diseñador archivos, y declarando que el objetivo UpdateDesignTimeXaml definido dentro del paquete Xamarin.Forms NuGet debe ser utilizado para generar código a partir del archivo de marcado.

+0

¡Esa debería ser la respuesta correcta! – Ugur

0

Una solución aún más fácil y más rápida para los proyectos de Xamarin Forms, sin necesidad de tocar el archivo csproj, solución muy rápida.

Asegúrese de tener Show All Files seleccionado para el explorador de soluciones; puede estar activado de manera predeterminada.

  1. Seleccionar todos los archivos afectados
  2. Haga clic derecho>Exclude from Project
  3. seleccionar los mismos archivos de nuevo (debe ser desvanecido)
  4. clic derecho>Include in Project

Deben ahora todos pueden anidar correctamente y se realizarán todos los cambios necesarios para el archivo .csproj.

Es posible que haya un error InitializeComponent() does not exist in the current context) después de esto. Si ese es el caso, la solución es sencilla ..

  • Seleccionar todos los elementos afectados y cambiar Build Action de Page a Embedded Resource
Cuestiones relacionadas