我在WPF有很多标签的图。这些标签上的文字是动态加载和随时可能更改。如果设置了的宽度只是为自动,则这些标签可重叠,这使得文本不可读。

在图表支持多个尺寸,因此,如果它变大,则该棒是重新定尺寸和有更多的空间用于文本。现在,我想调整的文本是可用的空间。如果它变得太小了,我不想再显示标签(工具提示可用,因此用户仍然得到所需的信息)。考虑串“情况1,等等等等”,有可能是没有足够的空间来显示整个字符串,但只是第一个字。在这种情况下,我希望字符串是“情况1 ..”,与..指示存在在工具提示中的更多信息。

我能确定可用于串的长度。但我怎么能确定空间中的一个字母将采取?当然,我也可以只重新大小的标签,但当时它只是切断任何地方的字符串,它可能是不利于用户(和长相丑陋)。

任何想法?

有帮助吗?

解决方案

如果您可以使用的TextBlocks,而不是标签,然后他们有一个的的TextTrimming 属性,这将为你做这个要么最近的字符或最近的字。


虽然你似乎感到满意的TextTrimming财产,我将修改这个补充的是,TextBox控件具有的 GetRectFromCharacterIndex 方法,将允许只要字体设置符合你的标签,你找出来的一个或多个字符的屏幕尺寸。如果你想在标签,而不是最近的字符/字特定的地方修剪这可能是有用的。

其他提示

不要在WPF的专家,但我认为你需要做到这一点的代码,而不是XAML。

通过获得可用于文本的空间的实际像素宽度启动。 再看看该字符集,在XAML前端利用点距等,并从那里计算每个字符所需要的像素宽度。

您还可以看看改变字符尺寸以及减少标签长度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top