调整标签大小

时间:2009-05-11 11:27:32

标签: wpf label resize

我在WPF中有一个带有很多标签的图表。这些标签上的文字是动态加载的,可能会有变化。如果我将宽度设置为自动,则这些标签可能会重叠,这会使文本无法读取。

图表支持多种尺寸,因此如果图表变大,则会调整尺寸并为文本留出更多空间。现在我想将文本调整到可用的空间。如果它太小,我不想再显示标签了(工具提示可用,因此用户仍然可以获得所需信息)。考虑字符串“Case 1,blah blah”,可能没有足够的空间来显示整个字符串,但只是第一个字。在这种情况下,我希望字符串为“Case 1 ..”,其中..表示工具提示中还有更多信息。

我可以确定字符串的可用长度。但是如何确定单个字母的空间呢?当然我也可以重新调整标签的大小,但是它会切断任何可能对用户没有帮助的字符串(看起来很难看)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您可以使用TextBlocks代替标签,那么它们会有一个TextTrimming属性,可以为您执行最近的字符或最近的单词。


虽然您对TextTrimming属性感到满意,但我将对此进行编辑以添加TextBox控件具有GetRectFromCharacterIndex方法,该方法允许您在屏幕上查找一个或多个字符的大小,只要字体设置与您的标签相匹配。如果您想要修剪标签中的特定位置而不是最近的字符/单词,这可能很有用。

答案 1 :(得分:0)

不是WPF的专家,但我认为您需要在代码中而不是XAML中执行此操作。

首先获取文本可用空间的实际像素宽度。 然后查看XAML前端使用的字符集,点间距等,然后计算每个字符所需的像素宽度。

您还可以查看更改字符大小以及缩短标签长度。