If the ratio between the controls is constant, you can make the background "stretch across" the controls by adjusting the offset, like this:
<Grid Width="700" Height="300">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- Horizontal gradient -->
<Grid Width="600" Grid.Row="1" Grid.Column="1">
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Red" />
<GradientStop Color="Green" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
<Grid Width="200" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right">
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Red" Offset="-2" />
<GradientStop Color="Green" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
<!-- Vertical gradient -->
<Grid Width="600" Grid.Row="3" Grid.Column="1">
<Grid.Background>
<LinearGradientBrush StartPoint="1,0" EndPoint="1,1">
<GradientStop Color="Blue" />
<GradientStop Color="Yellow" Offset="2" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
<Grid Width="200" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Right">
<Grid.Background>
<LinearGradientBrush StartPoint="1,0" EndPoint="1,1">
<GradientStop Color="Blue" Offset="-1" />
<GradientStop Color="Yellow" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
</Grid>