2010-03-30 9 views
6

He intentado con Google y he intentado con Bing en vano. ¿Alguien aquí tiene una idea sobre cómo evitar que los elementos parciales aparezcan en un cuadro de lista en WPF? En caso de que no tenga sentido, aquí hay un ejemplo: Listbox tiene 200 píxeles de alto, cada elemento mide 35 píxeles de alto. Eso significa que puedo mostrar 5.7 artículos. 7/10 de un artículo no es deseable. Me gustaría limitarlo a mostrar solo 5 artículos. El usuario podría desplazarse para ver los elementos adicionales.No mostrar elementos parciales en un cuadro de lista de WPF

¿Debo A) intentar dimensionar dinámicamente el cuadro de lista o ScrollViewer ViewPort para que se ajuste perfectamente? O B) ¿implementar un panel personalizado que no organizaría un niño cuya altura deseada es más que el espacio vertical restante?

Cualquier pensamiento sería muy apreciado. Última nota: si alguien sabe de un control de terceros (listbox o grid) que hace esto, yo también estaría interesado en eso.

+0

hmmm, bueno, en WinForms el ListBox tiene una configuración: IntegralHeight AFAIK, WPF ListBox no. –

Respuesta

1

Simplemente cambie el tamaño en el diseñador hasta que no obtenga una fila parcial. Implementar un panel personalizado es demasiado trabajo para algo como esto.

También podría probar ListView en lugar de ListBox. Es posible que esté recordando mal esto, pero creo que ListView no muestra parciales, o tal vez tiene una opción para no mostrar filas parciales.

+0

Voy a mirar la lista. No podemos pre-dimensionar el listbox. Su altura crecerá cuando/si el usuario cambia el tamaño de la ventana. –

+2

¡Bien por ti, David por manejar el tamaño correctamente! No hacerlo es una de mis principales preocupaciones. –

+0

En realidad, mi verdadera respuesta debería haber sido: "no te molestes". Lo que describes es un comportamiento normal en el cuadro de lista; Dudo si perderías clientes por eso. – MusiGenesis

1

He estado pensando en esto hoy ya que mi proyecto ha estado combatiendo este problema. Mis pensamientos están relacionados con mi proyecto, pero deberían ser aplicables. Asumo un MVVM ViewModel, pero funcionaría sin él.

Enlaza una propiedad a la altura del contenedor en el que se encuentra ListBox y luego vincula la altura del ListBox con la de ValueConverter para hacer que el ListBox se expanda o reduzca por etapas en función del alto de un solo elemento. Esto puede parecer un poco divertido al cambiar el tamaño, pero con una breve animación podría verse bien.

+0

¿Puede dar un poco más de detalle a esta respuesta? –

+0

Trataré de arrojar una muestra simple este fin de semana –

1

puede lograr esto al encontrar las alturas reales del contenido del listbox en dispather y ajustar la altura del listbox, pero hará que el tamaño del listbox aumente o disminuya según la implementación.

1

Mi voto es un panel personalizado para cada artículo. Este panel no se muestra si no se puede mostrar por completo. La lista puede cambiar de tamaño según sea necesario porque su único trabajo es ser un contenedor redimensionable que proporcione un área para los paneles. Los paneles pueden crecer y contraerse según sea necesario.

Cuestiones relacionadas