archivos mensuales: Abril 2013

Fácil y rápida: Mover un rectángulo utilizando C# en una aplicación de Windows Store

Mi filosofía general del blog es que está perfectamente bien a blog sobre antiguo, se establecieron temas que han sido cubiertas hasta la muerte en otros lugares.  Supongo que este tema es uno de los, Pero estoy blogueando de todos modos.

He estado trabajando en una ventana de la aplicación de tienda y estoy en la parte donde tengo que hacer una animación.  Con este fin, He estado averiguando en pedacitos y pedazos de windows almacenan animación app que, como resulta, está muy cerca, Pero no exactamente como, Animaciones de XAML basado en .NET (Todavía voy a aceptar el hecho de WinRT <> .NET 🙂 ).

Esta mañana yo quería conseguir una manija en arrastrar y soltar las operaciones.  En el camino a, Quedé empantanado moviendo un rectángulo en su lugar :).  Aquí está el código que se mueve un rectángulo cuando el usuario hace clic en un botón:

   1:   
   2:              MatrixTransform ct = (MatrixTransform)rectBig.RenderTransform;
   3:              Matriz m = ct.Matriz;
   4:              m.OffsetX  = 10;
   5:              m.OffsetY  = 10;
   6:              CT.Matriz = m;
   7:              rectBig.RenderTransform = ct;

El truco aquí es que no puedo cambiar directamente OffsetX o OffsetY.  Puede haber una manera más inteligente de hacer esto (y si usted sabe y siente como, por favor lo publique en los comentarios). 

Para hacer esto, Necesito:

1. Conseguir la MatrixTransform del rectángulo (por fundición RenderTransform).

2. Obtener la matriz de ese tipo.

3. Cambiar las compensaciones de la matriz.

4. Reasignar la matriz a la MatrixTransform.

5. Reasignar el MatrixTransform volver al rectángulo.

Para probarlo, Puse un rectángulo y botón de la pantalla. Cuando hago clic con el botón, la lógica anterior se ejecuta y mueve el rectángulo inmediatamente.

En algún momento, Me gustaría animar a esto pero no tengo ni idea de cómo conseguir una DoubleAnimation para trabajar en él (Storyboard.SetTargetProperty() está siendo un misterio para mí en esto por el momento).

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Ajuste la altura de ListboxItems en un cuadro de lista mediante programación para App Store de Windows

Estoy trabajando en una tienda de aplicación para windows y una de las cosas que quiero hacer en la app es un registro que muestra mensajes de estado y otros datos informativos como el usuario trabaja cosas. Con este fin, He añadido un control ListBox como sigue:

<ListBox x:Nombre ="GameStateLog" HorizontalAlignment ="Centro" Altura ="221" VerticalAlignment ="Arriba" Ancho ="499" Relleno ="0" FontSize ="10">

 

El código de C# para rellenar el cuadro de lista en tiempo de ejecución fue a lo largo de las líneas de:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nuevo juego estado: a la espera de jugador 1 nombre");

Esto funcionó bien bastante pero la interfaz de usuario demostraron una cantidad loca de relleno alrededor de los mensajes individuales como se agregaron. Tiene sentido si desea que los usuarios finales sean capaces de seleccionar estos elementos, pero no tiene sentido cuando sólo quiero mostrar una serie corriente de mensajes de registro, los usuarios no seleccionan estas, solo verlos. Era extrañamente difícil de encontrar una manera fácil de hacerlo y posiblemente, lo que encontré no es necesariamente "fácil", pero lo conseguí trabajando OK. La idea clave vino de esta publicación aquí (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) de Bob Relyea. En lugar de agregar cadenas a la colección de Items en el ListBox, Añadir ListBoxItems. Mediante la adición de una cadena, el cuadro de lista estaba creando su propio ListBoxItem en su propio. Yo no era capaz de cualquier cosa sobre eso ListBoxItem afectan después del hecho. El nuevo código es:

        privada void AddGameStateLogMessage(cadena Mensaje)
        {
            ListBoxItem li = Nuevo ListBoxItem();
            Li.Contenido = mensaje;
            Li.MaxHeight = 25;

            Grueso thisPadding = Nuevo Grueso(5, 0, 5, 0);
            Li.Relleno = thisPadding;

            GameStateLog.Items.Insert(0,Li);
        }

 

Aquí estoy creando de ListBoxItem e insertándolos. Quité el exceso de almohadillado estableciendo su grosor.

Es muy flexible ya que pretendo hacer un poco de color para resaltar determinados tipos de mensajes de codificación y añadiendo directamente ListBoxItems consigo los estilo de ninguna manera que quiero.

Espero que esto ayude a alguien!

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin