Установить максимальную высоту элемента управления на основе высоты других элементов управления (используя CalcBinding)
У меня есть TextBlock
и три Grid
с, содержащиеся внутри другого Grid
, Каждая внутренняя сетка содержит TextBlock
в первом ряду и DataGrid
во-вторых. Данные в сетках данных имеют переменное количество записей.
<Grid Name="gridOuter">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" /> // <-- x3
...
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Contents" />
<Grid Grid.Row="1" Name="innerOne" MinHeight="50" MaxHeight="???">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0">Heading One</TextBlock>
<ScrollViewer Grid.Row="1">
<DataGrid Name="dataGridOne">
<DataGridColumns>
<DataGridTextColumn Header="Title" Binding="{Title}" />
<DataGridTextColumn Header="Description" Binding="{Description}" />
<DataGridColumns>
</DataGrid>
</ScrollViewer>
</Grid>
...
<!-- x2 more with Grids named innerTwo and innerThree, with contained
DataGrids named dataGridTwo and dataGridThree, respectively
-->
</Grid>
Я хочу установить MaxHeight
каждой из внутренних сеток, чтобы равняться ActualHeight
внешней сетки, минус сумма MinHeight
с двух других внутренних сеток.
Я использую CalcBinding, но я открыт для любого другого решения.
Я надеюсь, что смогу сделать что-то вроде:
MaxHeight="{cb:Binding ActualHeight, ElementName=gridOuter
- (cb:Binding MinHeight, ElementName=dataGridTwo
+ cb:Binding MinHeight, ElementName=dataGridThree)}"
Возможно ли это с CalcBinding, и если да, то каков правильный синтаксис, если нет, то возможен ли другой путь?