Stretch panel with splitter

Posted by user1153896 on Stack Overflow See other posts from Stack Overflow or by user1153896
Published on 2012-03-28T17:18:46Z Indexed on 2012/03/28 17:29 UTC
Read the original article Hit count: 239

Filed under:
|

I want to implement a basic WPF layout with three panels and two splitters (Horizontal and Vertical splitter).

Two panels on the left and on the bottom has to be callapsable and one panel has to stretch accordingly.

Here is a simple XAML:

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="5"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <StackPanel Background="Aqua" Grid.Column="0" Name="leftPanel" >
                <TextBlock FontSize="35" Foreground="#58290A" TextWrapping="Wrap">Left Hand Side</TextBlock>
            </StackPanel>

            <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch"/>

            <Grid Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="5" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                    <Label Content="... Clien Area .. Has to Stretch vertically and horizontally" Margin="10"></Label>
                    <Button Click="LeftButton_Click" Margin="10">Close Left Panel</Button>
                    <Button Click="BottomButton_Click" Margin="10">Close Bottom Panel</Button>
                </StackPanel>
                <GridSplitter Grid.Row="1" Background="Gray" HorizontalAlignment="Stretch"/>
                <ListBox Grid.Row="2" Background="Violet" Name="bottomPanel">
                    <ListBoxItem>Hello</ListBoxItem>
                    <ListBoxItem>World</ListBoxItem>
                </ListBox>
            </Grid>
        </Grid>

and codebehind:

    private void LeftButton_Click(object sender, RoutedEventArgs e)
    {
        leftPanel.Visibility = (leftPanel.Visibility == System.Windows.Visibility.Visible)? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
    }

    private void BottomButton_Click(object sender, RoutedEventArgs e)
    {
        bottomPanel.Visibility = (bottomPanel.Visibility == System.Windows.Visibility.Visible) ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
    }

This code doesn't work as expected :(. Any WPF experts around? to suggest a solution for having Client Area (stretched) and splitter at the same time?

DockPanel will work perfectly, but I need splitter!

Thanks.

© Stack Overflow or respective owner

Related posts about wpf

Related posts about wpf-controls