Tema: Evento wpf
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/02/2017, 04:28
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Evento wpf

Cita:
Iniciado por Drako_18 Ver Mensaje
Buenas compañero,

Si asignas un ID a los elementos que quieres acceder (textblock), con hacer un find de los controles que tiene dentro... Será suficiente....


Un saludo!
Por supuesto que esta información es totalmente incorrecta.

En primer lugar en WPF los elementos no tienen "Id", sino que tienen un x:Name.

En segundo lugar, no se puede referenciar por x:Name los UIElements dentro de un DataTemplate asignado como ItemTemplate de un ItemsControl.

Encima de todo, como se esta usando DataBinding, hay un error conceptual en querer acceder a los datos a traves de los UIElements, ya que en realidad los datos se encuentran fuera de la GUI, en el objeto que se usa como DataContext.

En este caso, una forma correcta de resolverlo es hacer algo como esto:

Código C#:
Ver original
  1. private void Button_Click(object sender, RoutedEventArgs e)
  2. {
  3.     var source = (FrameworkElement)sender;
  4.     var data = sender.DataContext as MiClase;
  5.  
  6.     var nom = data.nom;
  7.     var foto = data.foto;
  8. }

Donde MiClase es la clase que se está usando como elemento de la lista.

Otra forma aún más correcta es separar estrictamente el comportamiento de la capa de presentación, de la parte visual de la capa de presentación, usando el patrón MVVM o Presentation Model. En WPF, para usar este patrón en interacciones del usuario (como clicks de botones) se utiliza la interfaz System.Windows.Input.ICommand, con alguna de las muchas implementaciones que hay en los distintos frameworks MVVM que existen.

Última edición por agleiva; 17/02/2017 a las 04:34