我在一个窗口中有一个Grid
,其中包含RadioButton
,TextBox
和Button
,分别位于第0,1,2列。他们都将自己的高度设置为自动。
然后,在窗口的另一部分,我有另一个Grid
,Label
,TextBox
和Button
,列0,1和2 。高度也设置为自动。
我遇到的问题是第一个网格的高度小于第二个网格的高度。我想这是因为Label强迫第二个更高。我怎样才能使第一个网格与第二个网格一样高?我试过这样做:
在第二个网格SomeName中命名文本框
在第一个Grid的<Grid.ColumnDeclarations>
中,我将高度从“auto”更改为“{Binding ElementName = SomeName,Path = Height}”。
但这并不是我想要的。大小是一样的。我猜Binding基本上是“自动”并把它扔到那里,最终是同样的事情。
另外,我正在寻找一种不涉及将高度设置为固定值的解决方案。
答案 0 :(得分:41)
绑定到ActualHeight
而不是Height
属性:
<RowDefinition Height="{Binding ActualHeight, ElementName=otherTextBox}" />
答案 1 :(得分:9)
将两个网格放在shared size scope中,然后使用SharedSizeGroup
将行高锁定在一起:
<SomeContainer Grid.IsSharedSizeScope="True"> <!-- Could be the Window or some more nearby Panel -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition SharedSizeGroup="LabelAndRadioButtonGroup" />
</Grid.RowDefinitions>
<Label Grid.Row="0" />
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition SharedSizeGroup="LabelAndRadioButtonGroup" />
</Grid.RowDefinitions>
<RadioButton Grid.Row="0" />
</Grid>
</SomeContainer>