У меня есть рекурсивно определенный пользовательский элемент управления, которому необходимы следующие свойства:
есть две колонки
первый содержит одну рамку вокруг текста
второй столбец содержит стек элементов управления того же типа (рекурсивная часть)
если поле в первом столбце короче, чем общая высота сложенных блоков во втором столбце, поле должно расшириться, чтобы оба столбца имели одинаковую высоту.
Если общая высота второго столбца короче, чем поле в первом столбце, то последний элемент в стеке второго столбца должен расшириться, чтобы они имели одинаковую высоту.
так, например, это может выглядеть так:
Хорошо, пока что я создал горизонтальную панель стека, где первый элемент - это панель док-станции, содержащая рамку и текст ... второй столбец - панель вертикальной стопки, привязанная к подсписку, создающая рекурсив пользовательский контроль ... как это ..
<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>
Теперь это прекрасно работает, если столбец с накоплением выше, но не работает, если первый столбец выше, и я получаю пробелы. Любая идея, как справиться с этой взаимной зависимостью от высоты?
Обновление:
Таким образом, добавив рамку вокруг правой панели столбцов, я смог увидеть, что панель стека действительно получила изменения минимальной высоты. Однако даже при наличии возможности расширения дочерние элементы панели стека не обновлялись автоматически. Если я исправлю минимальную высоту панели стека перед рукой на что-то большое, дети заполнятся. Мне нужно выяснить, как обновить высоту детей в зависимости от изменений минимальной высоты панели стека.