Изменение размера сетки с помощью GridSplitter

#c# #wpf #xaml #grid #gridsplitter

#c# #wpf #xaml #сетка #gridsplitter

Вопрос:

У меня есть следующее, Grid где я хочу ввести GridSplitter для изменения размера содержимого Expander , если оно расширено:

 <Grid Grid.Row="2" Margin="0,5,0,0" >
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <!-- Menu -->
    </Grid>
    <Grid Grid.Row="1">
        <!-- Main-Content -->
    </Grid>
    <GridSplitter Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Stretch" Height="3"/>
    <Expander Grid.Row="3" Margin="0,10,0,0" VerticalAlignment="Bottom" Header="Details">
        <TabControl ItemsSource="{Binding DetailsViewModels}">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding DisplayHeader}"/>
                </DataTemplate>
            </TabControl.ItemTemplate>
        </TabControl>
    </Expander>
</Grid>
  

Теперь моя проблема заключается в размере Expander содержимого и изменении размера при перемещении GridSplitter .

Если я установлю высоту RowDefinition того места, где находится расширитель, на *, то при расширении расширителя потребуется гораздо больше места.

Если я установлю максимальную высоту в TabControl , то я смогу сделать ее TabControl меньше, если она Expander будет расширена. Но если максимальная высота достигается только при GridSplitter непрерывном перемещении.

Если я не задам какой-либо размер, TabControl он займет всю высоту, что, к сожалению, слишком много.

Как я могу добиться того, что TabControl занимает определенную максимальную высоту, но я могу увеличить ее с помощью моего GridSplitter ?

Комментарии:

1. Является ли это способом привязать MaxHeight or MaxWidth of TabControl к Height or Width of Expander с помощью некоторого преобразователя значений,

Ответ №1:

Может быть, вы можете перехватить событие Expanded расширителя из исходного кода и установить желаемый размер сетки самостоятельно?

Комментарии:

1. Проблема не в Expander том, что на данный момент расширено. Проблема в том, что я хочу изменить размер содержимого Expander , переместив GridSplitter