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

zxc*_*bnm 22 data-binding wpf height xaml

我在一个窗口中,Grid包含a RadioButton,a TextBox和a Button,分别在0,1,2列中.他们都将自己的高度设置为自动.

然后,在窗口的另一部分,我在Grida Label,a TextBox和a中有另一个Button,在0,1和2列中.高度也设置为auto.

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

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

但那并没有做我想要的.大小是一样的.我猜Binding基本上是"自动"并把它扔到那里,最终是同样的事情.

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

ito*_*son 44

绑定到ActualHeight而不是Height属性:

<RowDefinition Height="{Binding ActualHeight, ElementName=otherTextBox}" />
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是正确的答案. (2认同)
  • 我相信这应该是 `&lt;RowDefinition Height="{Binding Path=ActualHeight, ElementName=otherTextBox}" /&gt;` (2认同)

ito*_*son 9

将两个网格放在共享的大小范围内,并用于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>
Run Code Online (Sandbox Code Playgroud)

另请参见如何:在MSDN中共享网格之间的大小调整属性.