次のプロパティを必要とする再帰的に定義されたユーザーコントロールがあります。
2つの列があります
最初のテキストには、テキストの周囲に1つの境界線が含まれています
2番目の列には、これらの同じタイプのコントロールのスタックが含まれています(再帰部分)
最初の列のボックスが2番目の列の積み重ねられたボックスの全高よりも短い場合は、ボックスを拡張して両方の列を同じ高さにする必要があります。
2番目の列の合計の高さが最初の列のボックスよりも短い場合は、2番目の列のスタックの最後のアイテムが同じ高さになるように拡張する必要があります。
たとえば、次のようになります。
さて、これまでのところ、最初の項目が境界線とテキストを含むドックパネルである水平スタックパネルを作成しています... 2番目の列は、サブリストにバインドされた垂直スタックパネルであり、再帰的なユーザーコントロールを作成します。 .. このような..
<StackPanel Orientation="Horizontal" Background="AliceBlue">
<local:TMRequirementView Requirement="{Binding Baseline}" />
<StackPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding Requirements}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:TMGridView Baseline="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
要件が次のようになっている場合:
<DockPanel>
<Border MinHeight="50"
BorderBrush="Black" BorderThickness="2">
<TextBlock Text="{Binding Description}"
TextWrapping="Wrap" Background="Transparent" Height="Auto" />
</Border>
</DockPanel>
これで、積み重ねられた列が高い場合はうまく機能しますが、最初の列が高い場合は機能せず、ギャップが生じます。この相互の高さの依存関係を処理する方法はありますか?
更新:右側の列のスタックパネルの周囲に境界線を追加することで、スタックパネルが実際に最小の高さの変更を受け取ったことを確認できました。ただし、拡張する余地はありましたが、スタックパネルの子は自動的に更新されませんでした。手前のスタックパネルのミンハイトを大きなものに固定すると、子供たちがいっぱいになります。私が理解する必要があるのは、スタックパネルの最小の高さの変更に基づいて子供の高さを更新する方法です。