我在WPF中有一个带有很多标签的图表。这些标签上的文字是动态加载的,可能会有变化。如果我将宽度设置为自动,则这些标签可能会重叠,这会使文本无法读取。
图表支持多种尺寸,因此如果图表变大,则会调整尺寸并为文本留出更多空间。现在我想将文本调整到可用的空间。如果它太小,我不想再显示标签了(工具提示可用,因此用户仍然可以获得所需信息)。考虑字符串“Case 1,blah blah”,可能没有足够的空间来显示整个字符串,但只是第一个字。在这种情况下,我希望字符串为“Case 1 ..”,其中..表示工具提示中还有更多信息。
我可以确定字符串的可用长度。但是如何确定单个字母的空间呢?当然我也可以重新调整标签的大小,但是它会切断任何可能对用户没有帮助的字符串(看起来很难看)。
有什么想法吗?
答案 0 :(得分:1)
如果您可以使用TextBlocks代替标签,那么它们会有一个TextTrimming属性,可以为您执行最近的字符或最近的单词。
虽然您对TextTrimming属性感到满意,但我将对此进行编辑以添加TextBox控件具有GetRectFromCharacterIndex方法,该方法允许您在屏幕上查找一个或多个字符的大小,只要字体设置与您的标签相匹配。如果您想要修剪标签中的特定位置而不是最近的字符/单词,这可能很有用。
答案 1 :(得分:0)
不是WPF的专家,但我认为您需要在代码中而不是XAML中执行此操作。
首先获取文本可用空间的实际像素宽度。 然后查看XAML前端使用的字符集,点间距等,然后计算每个字符所需的像素宽度。
您还可以查看更改字符大小以及缩短标签长度。