WPF:将组件的高度绑定到另一个组件的高度

时间:2010-02-09 21:30:24

标签: wpf xaml data-binding height

我在一个窗口中有一个Grid,其中包含RadioButtonTextBoxButton,分别位于第0,1,2列。他们都将自己的高度设置为自动。

然后,在窗口的另一部分,我有另一个GridLabelTextBoxButton,列0,1和2 。高度也设置为自动。

我遇到的问题是第一个网格的高度小于第二个网格的高度。我想这是因为Label强迫第二个更高。我怎样才能使第一个网格与第二个网格一样高?我试过这样做:

在第二个网格SomeName中命名文本框 在第一个Grid的<Grid.ColumnDeclarations>中,我将高度从“auto”更改为“{Binding ElementName = SomeName,Path = Height}”。

但这并不是我想要的。大小是一样的。我猜Binding基本上是“自动”并把它扔到那里,最终是同样的事情。

另外,我正在寻找一种不涉及将高度设置为固定值的解决方案。

2 个答案:

答案 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>

另请参阅MSDN中的How to: Share sizing properties between grids