我有这样的情况:
<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,具体控件的高度似乎是 NaN。
关于如何计算高度或以其他方式防止重叠的任何想法。