none
SettingsFlyout actualizar view RRS feed

  • Pregunta

  • Buenos días,

    Estoy desarrollando una app (8.1) que se autentica con Windows Live. Como no es imprescindible autenticarse para el correcto funcionamiento de la app he puesto, de acuerdo con la guía de diseño de Ms, la posibilidad de autenticarse en la barra lateral de charms, dentro del apartado configuración. Una vez pulse en "cuentas" te dice si estás autenticado o no. Si no lo estás te ofrece la posibilidad de autenticarse mediante un botón. Una vez esté autenticado tiene que aparecer la foto de tu perfil en Windows Live en la parte superior de todas las páginas. Es algo que se consigue sin problemas al cambiar de página porque en el constructor del ViewModel correspondiente a cada vista he puesto

     UsuarioWindowsLive = app.UsuarioWindowsLive (app.UsuarioWidowsLive es una variable estática definida en el app.xaml.cs que se modifica al realizar la autenticación )

    y en el XAML de la vista tengo <Image Source ={Binding UsuarioWindowsLive.UrlFoto}/>

    Como decía al cambiar de vista logro el efecto deseado sin problemas. No así en la vista que estoy viendo cuando pulso en charms>configuarcion>cuentas. No logro que refresque la imagen de dicha vista a pesar de que actualizo el valor de la variable estática.

    Creo que he enfocado mal el problema y debería hacerlo de otra manera. ¿Qué me recomendais?

    1) Insistir en el camino que he tomado: pasar el objeto UsuarioWindowsLive mediante una variable estática en el app.xaml.cs y que se completa por primera vez cuando logro la autenticación. Esta autenticación la realizo en el code behind del SettingsFlyout  account.xaml.cs

    UsuarioWindowsLive usuarioWindowsLive = await windowsLiveService.DameUsuarioWindowsLiveAsync(login);
    

    2) Plantear un nuevo camino. Por ejemplo no usar codeBehind para el SettingsFlyout account.xaml y usar un view model para dicho SettingsFlyout que además sea accesible desde cualquier página desde la que se pueda acceder a la opción Charms>Configuración>Cuentas. Esto no se como se haría, si es que se puede. Si esta es la opción que recomiendas dame alguna pista sobre como lograrlo.

    3) No realizar la autenticación mediante un item en la barra lateral y usar otro mecanismo en alguna vista en concreto y que se propague mediante el uso de una variable estática en el app.xaml.cs.

    O cualquier otra que se os ocurra.

    La aplicación es 8.1 con XAML y C#. Uso el MVVM para casi todo ,con Unity como motor de dependencias y con el uso de Servicios que me realicen las tareas. Uso el code behind en el SettingsFlyout y en algunos controles de usuario.

    muchas gracias,

    José Antonio

    lunes, 10 de febrero de 2014 8:53

Respuestas