- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用户控件,称之为UserControl
,它有一个带有以下列定义的网格:
<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
,它本身包含一个网格,并在网格上定义了以下属性:
Grid.IsSharedSizeScope="True"
现在,我向 MainWindow
中的网格添加了几个 UserControl(每个控件到一个单独的行)。我的目标是让不同用户控件的每个列宽度保持同步。使用 SharedSizeGroup 时一切正常,除了一件事之外。似乎任何宽度为 *
的列都不会按其应有的方式运行。看起来 *
列宽度被设置为 Auto
。
SharedSizeGroup
和 *
大小调整是否存在任何限制/问题?这似乎是保持列宽同步的最佳方法,但我似乎无法解决这个问题。
谢谢。
最佳答案
DefinitionBase.SharedSizeGroup Property (Microsoft Docs) :
Columns and rows that participate in size-sharing do not respect Star sizing. In the size-sharing scenario, Star sizing is treated as Auto
如果您使用星号,那么所有列都将具有相同的宽度,因此如果您不介意自动调整大小方面,则应该为所有列分配相同的 SharedSizeGroup
:
<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
属性)
您可以推断,如果所有自动调整大小的列都位于共享大小组中,则所有星形大小调整列将具有相同的大小,因为范围中的每个网格将具有相同数量的未使用空间,这些空间将分配给星形- 大小的列。
一个简单的例子:
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition SharedSizeGroup="B" Width="*"/>
<ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>
正如所解释的,Width="*"
不会执行任何操作,但随着列 0
和 2
同步,列 1
也必须同步,因此您只需删除 SharedSizeGroup
:
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>
关于wpf - Grid 的 SharedSizeGroup 和 * 大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664008/
我的 WPF 应用程序上有一个 DataGrid 和一个网格,我希望它们受尊重的列大小相同。我想也许我使用 SharedSizeGroup 但似乎 DataGrid 列没有这个属性(我错了吗?)。 我
我希望使用网格作为我的顶级布局。网格将有 1 列和 n 行。网格中的每一行还应包含一个 3 列 1 行的网格。第二列是 GridSplitter,我尝试使用 SharedSizeGroup,以便更改所
所以,我有 3 个用户控件: 1。 SectionV.xaml ... ... ... 2。 BarV.xaml ...
两个包含以某种方式指定的元素的网格和 SharedSizeGroup 似乎有点问题。 这个问题是对 earlier question 的回应。来自 user D.H.我试图回答。原谅长度,但它有助于直
如果您运行此代码并单击选项卡 2,然后返回选项卡 1,应用程序就会变得疯狂并开始来回弹跳列宽。关于如何解决这个问题有什么建议吗?
我需要带有水平和垂直标题的表格(简单的 PivotGrid)。我在这里发现了一些类似(或几乎相同)的问题,但没有人给出解决方案。在 XAML 中我定义了这个结构:
我有以下 xaml:
没有Grid.SharedSizeGroup在 Silverlight 4 中。您对此问题的解决方法是什么? 例如:我有一个 DataTemplate为 ListBox.ItemTemplate由具有
我试图弄清楚 Grid 如何在其列和行中进行大小共享。我正在使用 Reflector 查看网格代码,但找不到任何匹配项。 cols/rows 共享大小应该首先获得所需的大小,然后使用最大找到的大小再次
我有一个用户控件,称之为UserControl,它有一个带有以下列定义的网格:
我使用代表国家/地区的 ItemsControl。对于每个国家,我使用 ListView 来显示其城市:
如果您在上面的 ItemsControl 下面运行示例窗口,将更新布局几秒钟,直到最后所有列都具有正确的宽度(正确 = 与下面的 ItemsControl 中的列相同)。 您可以更改窗口的宽度并水平和
当我在列上同时使用 SharedSizeGroup 和列跨越控件创建网格时,网格会“精神上”晃动并使 cpu 内核达到最大。 我敢肯定一定有一个很好的理由说明为什么这行不通,但我想不出!我还能如何实现
我遇到了与以下旧论坛帖子中所述相同的问题:Issue on MSDN 但是,出于某种原因,Microsoft 决定删除此处描述的答案中的功能。 我正在寻找的是一个 ListView 有 2+ 列,第一
我是一名优秀的程序员,十分优秀!