Pregunta

Tengo un gráfico en WPF con una gran cantidad de etiquetas. El texto en estas etiquetas es dinámicamente cargado y sujetos a cambios. Si fijo el ancho justo para auto, a continuación, estas etiquetas pueden superponerse, lo que hace que el texto ilegible.

El apoyo gráfico de múltiples tamaños, por lo que si se hace más grande, a continuación, las barras son re tamaño y no hay más espacio para el texto. Ahora quiero ajustar el texto al espacio que está disponible. Si se pone demasiado pequeña, no quiero para mostrar la etiqueta más (un texto de ayuda está disponible, por lo que el usuario todavía obtiene la información requerida). Considere la cadena "Caso 1, bla, bla", probablemente no hay suficiente espacio para mostrar la cadena completa, pero sólo la primera palabra. En este caso quiero que la cadena se "Caso 1 ..", con .. que indica que no hay más información en la descripción.

puedo determinar la longitud disponible para la cadena. Pero ¿cómo puedo determinar el espacio de una sola letra tomará? Por supuesto que podría también acaba de volver del tamaño de la etiqueta, pero entonces sería acaba de cortar la cadena en cualquier lugar que probablemente no es útil para el usuario (y se ve feo).

¿Alguna idea?

¿Fue útil?

Solución

Si puede utilizar en lugar de las etiquetas TextBlocks entonces tienen un TextTrimming propiedad que lo hará por usted, ya sea el personaje más cercano o la palabra más cercana.


Mientras que parece feliz con la propiedad TextTrimming, voy a editar esto para añadir que el control de cuadro de texto tiene un GetRectFromCharacterIndex método que le permitiría a averiguar el tamaño de la pantalla de uno o más caracteres, siempre y cuando la configuración de fuente coincide con su etiqueta. Esto puede ser útil si desea recortar en lugares específicos en la etiqueta en lugar del carácter / palabra más cercana.

Otros consejos

No es un experto en WPF, pero me gustaría pensar que tendrá que hacer esto en vez de código XAML.

Para empezar, la obtención del ancho de píxel real del espacio disponible para el texto. Luego, busquen en el juego de caracteres, tamaño de punto, etc. utilizado en la parte delantera XAML y de allí calcular el ancho de píxel requerido por carácter.

También podría mirar a cambiar el carácter tamaños, así como la reducción de la longitud de la etiqueta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top