题
我在WPF有很多标签的图。这些标签上的文字是动态加载和随时可能更改。如果设置了的宽度只是为自动,则这些标签可重叠,这使得文本不可读。
在图表支持多个尺寸,因此,如果它变大,则该棒是重新定尺寸和有更多的空间用于文本。现在,我想调整的文本是可用的空间。如果它变得太小了,我不想再显示标签(工具提示可用,因此用户仍然得到所需的信息)。考虑串“情况1,等等等等”,有可能是没有足够的空间来显示整个字符串,但只是第一个字。在这种情况下,我希望字符串是“情况1 ..”,与..指示存在在工具提示中的更多信息。
我能确定可用于串的长度。但我怎么能确定空间中的一个字母将采取?当然,我也可以只重新大小的标签,但当时它只是切断任何地方的字符串,它可能是不利于用户(和长相丑陋)。
任何想法?
解决方案
如果您可以使用的TextBlocks,而不是标签,然后他们有一个的的TextTrimming 属性,这将为你做这个要么最近的字符或最近的字。
虽然你似乎感到满意的TextTrimming财产,我将修改这个补充的是,TextBox控件具有的 GetRectFromCharacterIndex 方法,将允许只要字体设置符合你的标签,你找出来的一个或多个字符的屏幕尺寸。如果你想在标签,而不是最近的字符/字特定的地方修剪这可能是有用的。
其他提示
不要在WPF的专家,但我认为你需要做到这一点的代码,而不是XAML。
通过获得可用于文本的空间的实际像素宽度启动。 再看看该字符集,在XAML前端利用点距等,并从那里计算每个字符所需要的像素宽度。
您还可以看看改变字符尺寸以及减少标签长度。
不隶属于 StackOverflow