none
¿como navego desde un usercontrol para realizar busquedas en una pagina? RRS feed

  • Pregunta

  • Muy buenas el problema es que tengo un popup ya realizado pero lo he hecho como UserControl para realizar búsquedas por nombre y fechas de tal fecha hasta tal fecha, pero no lo consigo, lo que no consigo es transportar los datos del UserControl a la pagina en cuestión donde tengo que realizar la búsqueda, ¿Cómo lo hago? he hecho hasta esto dentro del método logitemnte searchUserControl es el objeto UserControl que esta definido en otro sitio y tiene sus propiedades para obtener los 3 datos que necesito que so nel nombre, y las 2 fechas en string.

    ¿Cómo hago la búsqueda? gracias de ante mano

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
          transporte = e.Parameter as Transporte;
          Usuario = e.Parameter as string;
          searchUserControl = e.Parameter as SearchUserControl;

          //Usuario = e.Parameter as string; 

    }

    martes, 12 de marzo de 2013 15:55

Todas las respuestas

  • Hola onzulin,

    Depende de como hayas implementado tu capa de datos y donde los guardas. Principalmente, hay dos maneras:

    1. Tener un único objeto que contiene los datos y que se puede acceder desde cualquier sitio en tu código. (Usando el patrón Singleton)
    2. Pasar los datos a través de los parámetros

    Para la segunda opción tendrías que preparar los datos que quieres que estén disponibles en el UserControl de la busqueda en la función OnSearchActivated en tu App.xaml.cs. Lo que yo suelo hacer es definir una clase simple para los parámetros de la navegación:

    public class NavigationParameters : Dictionary<String, Object> { }

    Es solo por comodidad, realmente podrías usar el Dictionary directamente.

    Entonces, en OnSearchActivated podrías añadir los datos a los parámetros, y pasarlos al UserControl: 

    NavigationParameters p = new NavigationParameters();
    
    // la consulta de la busqueda
    p["searchquery"] = args.QueryText;
    
    // los datos sobre los que quieres ejecutar la consulta
    p["data"] = _misDatos;
    
    [...]
    
    (Window.Current.Content as Frame).Navigate(typeof(SearchUserControl), p);

    Así podrías acceder a esa inforfmación en el OnNavigatedTo del SearchUserControl:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
    	NavigationParameters p = e.Parameter as NavigationParameters;
    
    	if (p.Keys.Contains("searchquery"))
    	{
    		// hacer algo con p["searchquery"]
    	}
    	
    	if (p.Keys.Contains("data"))
    	{
    		// hacer algo con p["data"]
    	}
    }

    Espero que sea lo que necesitabas saber.

    Un saludo


    Helge Mahrt - Microsoft Developer Support Engineer - If my reply answers your question, please mark this post as answered.

    viernes, 22 de marzo de 2013 14:07