GridSplitter with a fixed panel (grid column) when grid (usercontrol/window) size changes

Here is a simple solution that I can recommend to you for your need:

For your right column, instead of using a dynamic width (1*), use a fixed width:

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="3" />
            <ColumnDefinition Width="160" />
        </Grid.ColumnDefinitions>

If you set a fixed width of 160:

  • You will get the same initial result (1/5 of the initial width of your window)
  • You will be still able to resize your grid
  • On resize, your right column will keep it's width

And you have also the possibility to use code behind to calculate the desired fixed width at startup, according to the window initial width, to be more "dynamic".