Etiqueta: Windows Store

  • Algunas diferencias entre WPF para escritorio y la Tienda de Windows

     

    Pues eso… aunque el título más bien tendría que ser: algunas propiedades que están en las aplicaciones WPF para escritorio y que no está o son diferentes en las aplicaciones WPF para la Tienda de Windows.

     

    Aquí te enumero algunas que me he ido encontrando:

    1.- En las aplicaciones WPF para escritorio algunos controles tienen la propiedad Tooltip, en las aplicaciones para Windows Store hay que usar: ToolTipService.ToolTip.

    2.- En WPF/desktop el control TextBlock tiene la propiedad IsEnabled, en las aplicaciones de Windows Store podemos usar: IsTextSelectionEnabled.

    En este ejemplo se asigna a esa propiedad el valor que tenga la propiedad IsEnabled de un control llamado cboTablas:

    IsTextSelectionEnabled="{Binding Source=cobTablas, Path=IsEnabled}"

     

    3.- El control TextBlock no tiene la propiedad Background en las aplicaciones para la Tienda de Windows. En este caso, lo que yo he hecho es poner dicho control dentro de un objeto Border, ya que lo que yo hacía con el color ese de fondo era darle otro aspecto (tipo información):

    <Border Background="LightGoldenrodYellow" 
            Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="3" 
            Margin="5" VerticalAlignment="Top">
        <TextBlock x:Name="lblInfo" Text=""  
                   TextWrapping="Wrap" FontSize="10" 
                   IsTextSelectionEnabled="{Binding Source=cobTablas, Path=IsEnabled}"/>
    </Border>
    

     

     

    Y ya no me he encontrado con más problemas en esta aplicación (simple) que estoy migrando… el problema seguro que lo tendré con el código… #enfin…

     

    Nos vemos.

    Guillermo

    …

  • Reloj para la Tienda de Windows por elGuille.info

     

    Pues eso… en esta entrada del blog puedes comentar los fallos de "Reloj para la Tienda de Windows", así como los deseos (nuevas características) que te gustaría que la aplicación  tuviese.

    Decirte que a día de hoy 08 de febrero de 2013 a las 13:02 tengo previstos estos cambios:

    • Usar siempre las fechas en formato dd/mmm/aaaa (salvo para el tile que seguiré usando AM/PM)
    • Podrás definir alarmas para ciertos días, a una hora determinada:
      – todos los días
      – de lunes a viernes
      – el día de la semana indicado (ejemplo: todos los miércoles a las 13:35)
    • Opción para cambiar a modo "temporizador", de forma que indiques a los cuántos minutos quieres que te avise y muestre la cuenta atrás
    • Una especie de "técnica pomodoro" (no especie, si no al estilo de)

     

    Y lo que se os vaya ocurriendo que encaje en este tipo de programa… sobre todo teniendo en cuenta que las aplicaciones para la Tienda de Windows no son como las aplicaciones de escritorio en el sentido de que las cosas que haya que programar (programar en el sentido de cronometrar) deben ser más o menos fijas, ya que nunca debes confiar en que una aplicación de la Tienda de Windows siempre esté en funcionamiento… no… y de eso tengo que hablar más, pero en otra entrada del blog…

     

    Espero que comentes… y que valores la aplicación en la Tienda de Windows… 😉

    Gracias.

    Nos vemos.
    Guillermo

    (Please press on "read more" to view the Englis translation)

    (más…)

  • y yo pensaba que convertir fechas y horas ya no sería más un calentamiento de cabeza

     

    Pues eso… que sigue siendo… al menos si utilizas "tu formato preferido", aunque sea con otro "locale"… en fin… que no recuerdo yo desde cuando no tenía problemas para convertir una cadena con el formato de una fecha (supuestamente de forma correcta) a un objeto de tipo DateTime. A la memoria me vienen los tiempos del VB6 (o cualquier otro anterior a VB.NET) y sobre todo me acuerdo de cuando estaba escribiendo el código de mis foros con Visual Studio 2005 (ASP.NET 2.0).

    Y hoy va y me da este regalito el Visual Studio 2012:

     

    error al convertir fechas
    Figura 1. Error al convertir 31/01/2013 20:40:00 a una fecha…

    Así que… he tenido que optar por "salir del paso" convirtiendo "a mano" esas fechas erróneas y a usar el formato "yankee" para no tener problemas posteriores… espero que así sea…

     

    Te explico que todo ese "follón" es porque quiero guardar el contenido de una clase definida por mí mismo en los "settings" de Windows 8, con idea de poder usarla la próxima vez que ejecute la aplicación.

    En mi clase he sobrescrito el método ToString para que devuelva una cadena que posteriormente la pueda pasar desde lo que es, un tipo string, al tipo que he definido. Y ese ToString tiene el equivalente FromString para que devuelva un objeto usando el contenido de una cadena (con el formato que previamente he definido… o casi).

    El "problema" era que yo dejaba que el propio .NET se encargara de convertir la fecha en cadena, es decir, no usaba ningún formato específico, por tanto el formato devuelto es: #d/M/yyyy h:m:sAM/PM# (o más o menos) y claro, la cadena usada era diferente… total un follón.

    Así que… además de la comprobación manual, ahora lo que he hecho es que el método ToString devuelve la fecha con este formato: Fecha.ToString("#M/d/yyyy HH:mm:00#") y que salga el sol por Antequera…

    El "00" para los segundo es porque en este caso quiero que los segundos siempre sean 00, ya que es para una alarma en la que ese espacio de tiempo no se tiene en cuenta…

     

    Te muestro parte del código que ahora estoy usando y lo que he tenido que hacer para salir del paso… (sabiendo que el error es porque el formato es dd/MM/yyyy HH:mm:ss, por eso no hay más comprobaciones en el caso de que falle la conversión del DateTime.TryParse.

     

    Private Const elSeparador As String = ","
    
    ''' <summary>
    ''' Devuelve una cadena con los datos básicos:
    ''' Fecha y Mensaje.
    ''' Si se devuelven más datos, 
    ''' devolver el mensaje siempre al final.
    ''' </summary>
    Public Overrides Function ToString() As String
        Return String.Format("{0}{2} {1}", Fecha.ToString("#M/d/yyyy HH:mm:00#"), Mensaje, elSeparador)
    End Function
    
    ''' <summary>
    ''' Devuelve un objeto Alarma a partir del contenido
    ''' de una cadena, en el formato: "Fecha, Mensaje"
    ''' (el devuelto por <see cref="ToString"/>)
    ''' En lugar de la coma se usará el caracter indicado en <see cref="elSeparador"/>
    ''' </summary>
    Public Shared Function FromString(s As String) As Alarma
        Dim it As New Alarma
    
        Dim i = s.IndexOf(elSeparador)
        If i = -1 Then
            Return Nothing
        End If
    
        If DateTime.TryParse(s.Substring(0, i), it.Fecha) = False Then
            Dim s1 = s.Substring(0, i)
            ' si da el error es porque está en formato dd/MM/yyyy HH:mm:ss
            Dim dia = CInt(s1.Substring(0, 2))
            Dim mes = CInt(s1.Substring(3, 2))
            Dim año = CInt(s1.Substring(6, 4))
            Dim hora = CInt(s1.Substring(11, 2))
            Dim minuto = CInt(s1.Substring(14, 2))
            it.Fecha = New DateTime(año, mes, dia, hora, minuto, 0)
        End If
        'it.Fecha = CDate(s.Substring(0, i))
        it.Mensaje = s.Substring(i + 1).TrimStart()
    
        Return it
    End Function
    
    

     

    Sólo lo muestro en VB porque en C# no lo estoy usando para este programa, pero como comprobarás no es un código demasiado complicado… creo… 😉

     

    Pues ya está… ahí queda eso… para que no te confíes con las fechas desde cadena… 😉

     

    Nos vemos.

    Guillermo

    …