Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

682
Vistas
Enlace fuente de imagen dinámicamente en formularios xamarin

mi pregunta es, ¿podría vincular la imagen de la cadena a la fuente de la imagen? Tengo varias imágenes y la imagen cambiará en caso de condición. Asi que:

Xaml en formularios Xamarin:

 <Image Source="{Binding someImage}" Aspect="Fill" Grid.Row="2"></Image>

Código subyacente C#

 public String someImage; public String SomeImage { set { if (someImage != value) { someImage = value; } } get { return someImage; } }

Parte InitializeComponent:

 if(true) { someImage = "backgroundListViewGren.png"; } else { someImage = "backgroundListViewRed.png"; }

la imagen está en la carpeta "Imágenes" en el proyecto portátil

pero esto, no funciona, tal vez me equivoque en algo pero no entiendo. ¿Alguna solución?

Lo intenté con ImageSource y no con una cadena, pero tampoco funcionó.

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Publicaré esta respuesta aquí porque es la que estaba buscando y sospecho que la mayoría de los demás lo son (y Google actualmente lo dirige aquí, lo que actualmente no es muy útil).

Cómo enlazar una imagen usando XAML:

XAML:

 <Image> <Image.Source> <FileImageSource File="{Binding SomeImage}" /> </Image.Source> </Image>

Luego, en ViewModel, C#:

 public string SomeImage { get { return string.Format("prefix-{0}-suffix.png", OtherProperty); } }

C # más nuevo, mejor, pero esencialmente equivalente que puede usar en lugar del anterior:

 public string SomeImage => $"prefix-{OtherProperty}-suffix.png";

Esta es sin duda la forma más fácil de configurarlo, en mi opinión :).

EDITAR: No hace falta decirlo, pero la imagen obviamente debe estar en la carpeta de Resources del proyecto para cada plataforma.

EDIT2, mucho más tarde: en caso de que no sea obvio, "prefijo", "sufijo" son solo cadenas aleatorias, SomeImage solo tiene que devolver la ruta de su imagen. SomeImage y OtherProperty son miembros de su clase de modelo de vista, OtherProperty es solo algo en lo que está basando el nombre de su imagen (porque si conoce el nombre completo de antemano, no necesita esta pregunta).

about 4 years ago · Santiago Trujillo Denunciar

0

Usted dijo:

la imagen está en la carpeta "Imágenes" en el proyecto portátil

Cada plataforma tiene un enfoque diferente para los recursos y las imágenes. Xamarin maneja eso en todas las plataformas, por ejemplo, Xamarin.iOS tiene recursos integrados, mientras que Xamarin.Android usa recursos de Android para las imágenes.

Debe colocar sus imágenes en cada proyecto de Xamarin.Forms para saber dónde buscarlas en cada plataforma.

Para más información mira esto .

about 4 years ago · Santiago Trujillo Denunciar

0

Para usar imágenes de PCL, consulte esta parte en la documentación de Xamarin .

Debe asegurarse de que la Build action para cada imagen esté establecida en Embedded Resource .

Luego, si desea usarlos en XAML, especifique una MarkupExtension

 [ContentProperty ("Source")] public class ImageResourceExtension : IMarkupExtension { public string Source { get; set; } public object ProvideValue (IServiceProvider serviceProvider) { if (Source == null) { return null; } // Do your translation lookup here, using whatever method you require var imageSource = ImageSource.FromResource(Source); return imageSource; } }

Entonces debería poder usar sus imágenes de esta manera.

 <?xml version="1.0" encoding="UTF-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:WorkingWithImages;assembly=WorkingWithImages" x:Class="WorkingWithImages.EmbeddedImagesXaml"> <StackLayout VerticalOptions="Center" HorizontalOptions="Center"> <!-- use a custom Markup Extension --> <Image Source="{local:ImageResource WorkingWithImages.beach.jpg}" /> </StackLayout> </ContentPage>

Como se menciona en los comentarios, si desea que esto funcione de forma inmediata, colóquelos en la carpeta Recursos de su proyecto de plataforma respectivo. De esta manera, también puede aprovechar los mecanismos de ajuste de tamaño automático que existen. Para leer más sobre este método, consulte esta página .

Al agregarlos con la convención de nomenclatura correcta en la carpeta correcta, simplemente puede hacer referencia al nombre de archivo y Xamarin.Forms lo traducirá al formato correcto para la plataforma.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda