【问题标题】:How to ellipsise in the selected value in a combobox?如何在组合框中的选定值中省略?
【发布时间】:2023-11-28 23:57:01
【问题描述】:

在我们的 Silverlight 页面中,我得到了具有不同值的组合框。选中后,某些值太长而无法放入折叠的组合框中。

我希望它省略(“系统使用...”末尾有三个点)。

在下拉列表中可以看到值的全名,但折叠时我希望所选值省略。感觉很明显,因为下拉菜单通常比折叠控件提供更多空间,但我仍然找不到明显的方法来做到这一点。

【问题讨论】:

    标签: silverlight combobox truncate


    【解决方案1】:

    您可能想看看http://www.codeproject.com/Articles/37503/Auto-Ellipsis。 它类似于 Zenexar 的建议,在一般情况下使用更有效的归约算法。但它也写了其他类型的“省略”,也许也可以满足您的需求。

    【讨论】:

    • 这是一个深思熟虑的方法,考虑到迭代复杂性和测量文本,所以我将其标记为最佳答案。
    【解决方案2】:

    获取选定的 UIElement。将 RenderedWidth 和 RenderedHeight 与 DesiredSize 进行比较,后者将根据元素的截断方式进行调整。反复删除字符,追加省略号,使布局失效,直到DesiredSize小于等于RenderedWidth/RenderedHeight

    【讨论】:

    • +1 提供信息,谢谢,但我希望有更明显的东西和更少的修改。
    • 我不熟悉silverlight,我真的不知道你是否建议直接操作数据源(字符串?),但如果是这样的话,当你这样做时,这似乎有点麻烦使用动态调整大小的控件。尤其是当它变小然后变大时:丢弃的字符消失了吗?
    【解决方案3】:

    我认为最好的方法是检查所选项目的长度。如果长度超过预定的字符长度,则截断其余部分并附加三个句点。

    【讨论】:

    • 你真的建议计算字符像素长度吗?
    • 我不认为他建议计算像素长度。我认为他建议根据字符长度获得近似值。