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>
Sígueme en Twitter en http://www.twitter.com/pagalvin