私はこのような状況にあります:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="560"/>
<ColumnDefinition Width="250"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <!-- status infos & content start -->
<RowDefinition Height="Auto" /> <!-- status infos -->
<RowDefinition Height="Auto" /> <!-- status infos -->
<RowDefinition Height="Auto" /> <!-- status infos -->
<RowDefinition Height="*"/> <!-- content ends -->
</Grid.RowDefinitions>
<!-- image a list of custom controls directed to the first or second column on all rows here -->
<SomeCustomControl Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Grid.RowSpan="2" />
</Grid>
ご覧のとおり、2つの列があります。右側は多かれ少なかれステータス情報用に予約されており、左側はコンテンツ用に予約されています。「SomeCustomControl」には、ColumnSpan="2"に設定する必要がある幅の広いコントロールが含まれています。右側の列にまだステータスコントロールがあることに注意してください。SomeCustomControlには、次のようなものがあります。
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="250"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
[...]
<RowDefinition Height="Auto" />
<RowDefinition Height="*" /> <!-- problem control here -->
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- a list of Controls limited to the first column -->
<ProblemControl Grid.Column="0" Grid.ColumnSpan="2" />
</Grid>
これで、SomeCustomControlの最初の行には、最初の列に限定されたコントロールが含まれ、次に、ProblemControlを含む行があります。ステータスコントロールの高さは事前に決定されておらず、表示されるステータス情報によって異なります。最初の列に制限されているSomeCustomControlのコントロールにもさまざまな高さがあり、現在はコンテンツを通じて自動的に決定されます。
現在、ProblemControlがいくつかのステータスコントロールと重複しているという問題があります。SomeCustomControlでステータスコントロールと制限付きコントロールの高さを計算しようとしましたが、すべてのコントロールのサイズが動的であるため、正しい高さを取得できないようです。RowDefinitionsの高さにはすべてAutoタイプと値1のHeightsが含まれており、具象コントロールの高さはNaNのようです。
高さを計算する方法や、他の方法で重複を防ぐ方法に関するアイデア。