首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网格的SharedSizeGroup和*大小

网格的SharedSizeGroup和*大小
EN

Stack Overflow用户
提问于 2011-01-12 07:53:23
回答 1查看 40.5K关注 0票数 44

我有一个名为UserControl的用户控件,它有一个网格,它的列定义如下:

代码语言:javascript
复制
<Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
            <ColumnDefinition Width="Auto" SharedSizeGroup="B"/>
            <ColumnDefinition Width="*" SharedSizeGroup="C"/>
            <ColumnDefinition Width="Auto" SharedSizeGroup="D"/>
            <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="E"/>
            <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="F"/>
            <ColumnDefinition Width="110" SharedSizeGroup="G"/>
            <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/>
            <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/>
            <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/>
            <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/>
            <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/>
</Grid.ColumnDefinitions>

我还有MainWindow,它包含一个网格本身,在网格上定义了以下属性:

代码语言:javascript
复制
Grid.IsSharedSizeScope="True"

现在,我在MainWindow中的网格中添加了两个UserControls (每个添加到一个单独的行)。我的目标是让不同UserControls的每个列宽保持同步。使用SharedSizeGroup时,除了一件事之外,一切都运行得很好。似乎任何宽度为*的列的行为都不像它应该的那样。看起来好像*列宽被设置为Auto一样。

SharedSizeGroup*大小调整是否有任何限制/问题?这似乎是保持列宽同步的最好方法,但我似乎无法解决这个问题。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-12 07:56:37

DefinitionBase.SharedSizeGroup Property (Microsoft Docs)

参与大小共享的

列和行不考虑星形大小。在大小共享方案中,星形大小被视为自动

如果您使用star,那么所有列的宽度都将相同,因此如果您不介意自动调整大小,则应该将相同的SharedSizeGroup分配给所有列:

代码语言:javascript
复制
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
    <ColumnDefinition Width="Auto" SharedSizeGroup="B"/>
    <ColumnDefinition Width="*" SharedSizeGroup="StarDontWork"/>
    <ColumnDefinition Width="Auto" SharedSizeGroup="D"/>
    <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/>
    <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/>
    <ColumnDefinition Width="110" SharedSizeGroup="G"/>
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/>
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/>
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/>
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/>
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/>
</Grid.ColumnDefinitions>

(根据此行为,还可以在设置SharedSizeGroup时删除Width属性)

您可以推断出,如果所有自动调整大小的列都在共享大小组中,那么所有星形大小调整的列将具有相同的大小,因为作用域中的每个网格都将具有分配给星形大小列的相同数量的未使用空间量。

一个简单的例子:

代码语言:javascript
复制
<Grid.ColumnDefinitions>
    <ColumnDefinition SharedSizeGroup="A"/>
    <ColumnDefinition SharedSizeGroup="B" Width="*"/>
    <ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>

如前所述,Width="*"不会执行任何操作,但由于02列是同步的,因此也必须同步1列,这样您就可以删除SharedSizeGroup

代码语言:javascript
复制
<Grid.ColumnDefinitions>
    <ColumnDefinition SharedSizeGroup="A"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>
票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4664008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档