当您没有明确设置 ListBox 的宽度时,它会自动将其宽度设置为其最宽的可见项的宽度。这意味着当您向上和向下滚动并且最宽的可见数据项发生变化时,列表框本身的宽度会增加和减少。
那么找到列表中最宽项的宽度的最佳方法是什么,然后将 ListBox 宽度设置为该宽度?我的 ListBox 数据模板是一个 StackPanel,其中包含一个 CheckBox 和一个 TextBlock,因此显然 Textblock 的宽度会根据其中字符串的长度而有所不同。
这里已经有一些关于 SO 的建议,答案从“猜测”到“测量文本大小”(如何在 SL 中测量文本大小而不将其放在 UI 元素中?)。
谁能给我一些想法?如果必须,我愿意迭代所有数据模板实例,尽管更好的选择可能是找到最长的字符串并从那里计算?