Я попробовал ваш пример, и это происходит так, как вы сказали: столбец 2 пропал, поле пропало.
Это происходит, когда сетка не может быть отображена полностью.
Если, например, вы установили третий При определении столбца до 200 поле исчезает, как только столбец 2 не отображается полностью. То же самое происходит, когда вы изменяете размер окна снизу.
Если вы поместите существующую сетку в другой контейнер (Grid, StackPanel и т. Д. c.) И установите для параметра MinWidth значение, по крайней мере, равное размеру ширины столбцов + поля (в вашем примере 310) Такого не бывает.
Вот так:
<StackPanel MinWidth="310">
<Grid Margin="100,0,0,0" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<Border Background="DarkRed" Opacity="0.3" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Margin="-80,0,0,0" Panel.ZIndex="1" />
<TextBlock Text="column 0" Background="LightBlue" Grid.Row="0" Grid.Column="0" />
<TextBlock Text="column 2" Background="LightGreen" Grid.Row="0" Grid.Column="2" />
</Grid>
</StackPanel>