gpt4 book ai didi

c# - 环绕面板 : Trying to make the ItemWidth equal to the max width of any one element

转载 作者:太空狗 更新时间:2023-10-29 18:22:11 26 4
gpt4 key购买 nike

希望没有其他人问过这个问题,但我已经搜索过,找不到任何提及。如果我错过了另一个解释这个问题的问题,请随时指出我正确的方向。

我有一个包含数据绑定(bind)项的 WrapPanel,这些项基本上包含一个图标和一些可变长度的文本(这是图表的图例)。当我将 ItemWidth 设置为某个设定值时,我真的很喜欢这些项目显示在整齐的列中。但是,由于每个项目中文本长度的高度可变性,我无法轻松选择适用于所有情况的特定值。也就是说,在某些情况下,所有项目的文本可能都很短,因此 ItemWidth 的值较小是合适的。但有时,如此小的 ItemWidth 会导致某些项目中的文本被截断。

我认为我可以以某种方式将 ItemWidth 数据绑定(bind)到 WrapPanel 的子项,以便提取每个项目的宽度(并找到最大宽度,并将其用作 ItemWidth 等),但我对这样做持怀疑态度,因为数据绑定(bind)到错误事物的可能性。例如,绑定(bind)到在 ItemWidth 更改时更改的内容,从而导致无限循环(或者至少,重复不必要次数的循环。

最好的设置方法是什么,以便 ItemWidth 仅与防止截断所需的一样大?

编辑:

我想保留 WrapPanel 提供的功能,该功能允许有可变数量的项目列,具体取决于 WrapPanel 本身允许的空间。

最佳答案

您可以将每个项目包装在 Grid 中,并使用 Grid 的 ShareSizeScope 属性来确保所有项目共享相同的宽度。

例如,在您的 WrapPanel 上,您可以将 Grid.IsSharedSizeScope 设置为 true

<WrapPanel Grid.IsSharedSizeScope="True">

然后您将每个项目包装在一个单元格 Grid 中,该单元格使用 SharedSizeGroup 属性告诉他们他们都共享一个大小

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="SharedGroup" />
</Grid.ColumnDefinitions>
<ContentPresenter />
</Grid>

如果你想要一个例子,一个快速的谷歌搜索给了我 this answer其中包含一个代码示例。

如果您有大量数据,我也建议您对此进行性能测试。

关于c# - 环绕面板 : Trying to make the ItemWidth equal to the max width of any one element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com