Search code examples
wpfxamlstatusbargridsplitter

Gridsplitter in statusbar


I am attempting to put grid splitters in a statusbar. I have overridden the item panel template to place a grid in the status bar. I want to be able to slide the grid columns back and forth. Unfortunately I can't get the grid splitters to appear. I am using the xaml code below. Thanks for your time in advance.

<StatusBar>
            <StatusBar.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid IsItemsHost="True">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="10" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="10" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="10" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                    </Grid>
                </ItemsPanelTemplate>
            </StatusBar.ItemsPanel>
            <StatusBarItem Grid.Column="0">
                <Label Content="blah" />
            </StatusBarItem>
            <StatusBarItem Grid.Column="1">
                <GridSplitter Width="10" HorizontalAlignment="Stretch" />
            </StatusBarItem>
            <StatusBarItem Grid.Column="2">
                <Label Content="blah1" />
            </StatusBarItem>
            <StatusBarItem Grid.Column="3">
                <GridSplitter Width="10" HorizontalAlignment="Stretch" />
            </StatusBarItem>
            <StatusBarItem Grid.Column="4">
                <Label Content="blah2" />
            </StatusBarItem>
            <StatusBarItem Grid.Column="5">
                <GridSplitter Width="10" HorizontalAlignment="Stretch" />
            </StatusBarItem>
            <StatusBarItem Grid.Column="6">
                <Label Content="blah3" />
            </StatusBarItem>
        </StatusBar>

Solution

  • Your GridSplitter is not a direct descendant of the Grid. It is wrapped in a StatusBarItem. Therefore this can't work in that configuration.

    You could just use a Grid instead and style the background and borders to make it look like a StatusBar. The StatusBar is a relatively simple looking control, so it shouldn't be a too big of a deal to make something that looks like it.