ウィンドウに、それぞれ列0、1、2にGrid
、RadioButton
、およびTextBox
を含むButton
があります。 。それらはすべて、高さが自動に設定されています。
次に、ウィンドウの別の部分に、列0、1、および列にGrid
、Label
、およびTextBox
を含む別のButton
があります。 2.高さも自動に設定されます。
私が抱えている問題は、最初のグリッドの高さが2番目のグリッドよりも小さいことです。ラベルが2番目の背を高くしているからだと思います。最初のグリッドが2番目のグリッドと同じ高さになるようにするにはどうすればよいですか?私はこれをやってみました:
2番目のグリッドSomeNameのテキストボックスに名前を付けます。
の中に <Grid.ColumnDeclarations>
最初のグリッドで、高さを「auto」から「{Binding ElementName = SomeName、Path = Height}」に変更しました。
しかし、それは私が望んでいたことをしませんでした。サイズは同じでした。バインディングは基本的に「自動」になってそこにスローされていると思いますが、最終的には同じものになります。
また、高さを固定値に設定する必要のない解決策を探しています。
2つのグリッドを 共有サイズスコープ に配置し、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の 方法:グリッド間でサイズ設定プロパティを共有する も参照してください。
ActualHeight
プロパティではなくHeight
にバインドします。
<RowDefinition Height="{Binding ActualHeight, ElementName=otherTextBox}" />