Ayuda con Panorama item y Button

Para dar las gracias debes entrar o registrarte en el foro

Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
20 Mar 2014, 01:51# 1

Hola, estoy aprendiendo a programar con WP8 y tengo varias dudas de como usar el panorama item de un panoramaPag.
Mi idea es que por cada panorama item halla un botón y este dispare la función para abrir la galería de imágenes,se seleccione una imagen y la muestre en el Grid del panorama item que fue llamado. No se si se entiende mi idea.... :(
La cuestión es que como soy nueva en esto, no se como hacer para que con la misma función "btnGal_click" se llame a la galería, se seleccione una imagen y me reconozca que la imagen la muestre en Image del panorama item que llamo la función. Sino lo que voy a tener que hacer es crear por cada panorama item un evento distinto,y bueno..es la salida fácil. Quería saber si hay alguna forma mas eficiente que yo no veo por mis pocos conocimientos. GRACIAS!!!











->PanoramaPag.xaml.cs

private void btnGal_Click(object sender, EventArgs e)
{
PhotoChooserTask photoChooserTask;
photoChooserTask = new PhotoChooserTask();
photoChooserTask.Completed += new EventHandler(photoChooserTask_Completed);
try
{
photoChooserTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show("An error occurred."+ ex);
}

}
void photoChooserTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
MessageBox.Show(e.ChosenPhoto.Length.ToString());

//Code to display the photo on the page in an image control named myImageL.
System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
bmp.SetSource(e.ChosenPhoto);

myImageM.Source = bmp;

}
}

Gracias  
Etiquetado en:
Moderador
Moderador
Mensajes: 637 Agradecido: 22
21 Mar 2014, 16:43# 2

Estimada, una vez hice eso y lo que debes hacer es vía código c# de manera dinámica. Debes validar en que pagina estas del panorama y que los botones cambien según la pagina. Pero todo parametrizable por c#. En C# le asignas la,función o código que tu estimes para que cada botón funcione a lo que tu deseas ya que si lo haces por xaml , este se comporta en una sola página.

The fire was always burning!

Gracias  
Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
21 Mar 2014, 19:10# 3

mmmm No entiendo mucho lo que me estas sugiriendo.
Yo tengo la función que publique arriba, y tengo tres panorama item. Lo que no quiero es tener tres métodos btnGal_click por cada panorama programado en C#. Lo que busco es que al llamar a btnGal_Click me reconozca donde devolver la imagen seleccionada sin tener que tener tres veces la función escrita . Y justamente lo que no se es como recuperar en C# la propiedad de name de la imagen del panorama item que disparo el Click y poder igualarlo a myImageL, myImageM, myImageR para saber donde mostrarla.

Gracias  
Administrador
Administrador
Mensajes: 826 Agradecido: 119
21 Mar 2014, 22:02# 4

Según cómo lo tienes planteado, lo más sencillo sería:
1° Asignar el mismo nombre de manejador a todos los Clicks de todos los botones en el xaml.
2° Hacer el siguiente cambio:

void photoChooserTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
MessageBox.Show(e.ChosenPhoto.Length.ToString());

//Code to display the photo on the page in an image control named myImageL.
System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
bmp.SetSource(e.ChosenPhoto);
Image img = myImageL;

if(panorama.SelectedIndex == 1)
img = myImageM;
else if(panorama.SelectedIndex == 2)
img = myImageR;
img.Source = bmp;

}
}

Ajusta los nombres a tu código.

No es lo más limpio ni lo más óptimo pero funcionaría :)

Última edición por davdi el 21 Mar 2014, 22:04, editado 1 vez en total
Gracias  
Administrador
Administrador
Mensajes: 826 Agradecido: 119
21 Mar 2014, 22:03# 5

Editado por duplicado

Gracias  
Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
22 Mar 2014, 21:09# 6

Probé lo que me recomendaste, pero panorama.SelectedIndex no existe. Trate con PanoControl.Items.Equals(panItem2) parece que funciona, pero ahora haciendo la asignación btnImagen3.Click += btnGal_Click;
y me da error (La llamada es ambigua entre los siguientes métodos o propiedades: 'ApplicationBar.PanoramaPage1.btnGal_Click(object, System.EventArgs)' y 'ApplicationBar.PanoramaPage1.btnGal_Click(object, System.EventArgs)' )
:thanks:

Gracias  
Administrador
Administrador
Mensajes: 826 Agradecido: 119
22 Mar 2014, 21:21# 7

Como te puse, tenías que haber ajustado los nombres a tu código. En lo que habías puesto no sabía qué nombre le habías puesto al control Panorama. Viendo ahora que le has llamado PanoControl, sustituyendo panorama.SelectedIndex por PanoControl.SelectedIndex debería funcionarte.
Respecto a la referencia ambigua, captúralos mejor desde el xaml poniendo algo como:

Gracias  
1 persona ha dado las gracias: candyvf
Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
22 Mar 2014, 21:27# 8

es que mi idea es: como es un selector de imágenes por cada panorama item, al seleccionar la primera te deja seleccionar una segunda imagen en el segundo panorama item; sino no. Y estaba viendo si se podía asignar el método click en la misma llamada, pero por lo visto me da error de ambiguación... lo haré directamente con isEnabled por cada botón y que se habilite cuando se agregue la imagen anterior.
Voy a probar lo que me corregís, pero creo que ya lo había intentado y me seguía diciendo que no existe SELECTEDINDEX. Gracias por ayudarme :)

Gracias  
Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
22 Mar 2014, 21:30# 9

aju... ahora me aparece panoControl.SelectedIndex :D A ver como arreglo lo de la ambiguacion al asignarle en la misma funcion el metodo btnImagen2.CLICK += btnGal_Click;

Gracias  
Administrador
Administrador
Mensajes: 826 Agradecido: 119
22 Mar 2014, 21:32# 10

A ver si te entiendo: quieres un Panorama con un PanoramaItem inicial, al que ir agregando PanoramaItem dinámicos con los mismos controles que el inicial al insertar una imagen?

Enviado desde mi LG-D802 mediante Tapatalk

Gracias  