Неверно рассчитывается ширина столбцов Grid в WPF
При запуске окна с установленным SizeToContent="WidthAndHeight" столбцы должны занимать ровно по половине ширины окна, но на самом деле получается так, что первый столбец занимает больше половины окна. Если это свойство убрать, то такого не происходит.
<Window x:Class="FreelMan.Views.OrderWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FreelMan.Views"
mc:Ignorable="d"
Title="{Binding StringFormat=FreelMan - Заказ №{0}, Path=Order.Id}" Name="orderWindow"
SizeToContent="WidthAndHeight" MinHeight="500" MinWidth="400" MaxHeight="600" MaxWidth="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="160"/>
</Grid.RowDefinitions>
<StackPanel Margin="10" Background="Beige">
<Label FontSize="16" Content="Информация"/>
<TextBlock Margin="5" Text="{Binding Path=Order}" TextWrapping="Wrap"/>
<Label Content="{Binding OrderSize}" ContentStringFormat="Размер на диске: {0}"/>
</StackPanel>
<StackPanel Grid.Row="1" Grid.ColumnSpan="2" VerticalAlignment="Bottom" Background="Blue">
<Button Margin="10 5" Padding="20px 5px" Command="{Binding EditStatusCommand}">Изменить статус</Button>
<Button Margin="10 5" Padding="20px 5px" Command="{Binding OpenExplorerCommand}">Открыть в проводнике</Button>
<Button Margin="10 5" Padding="20px 5px" Command="{Binding OpenVSCodeCommand}">Открыть в VS Code</Button>
<Button Margin="10 5" Padding="20px 5px" Command="{Binding DeleteCommand}" CommandParameter="{Binding ElementName=orderWindow}"
Foreground="White" Background="DarkRed">Удалить</Button>
</StackPanel>
<Rectangle VerticalAlignment="Stretch" Width="1" Margin="2" Stroke="Gray" HorizontalAlignment="Right"/>
<Grid Grid.Column="1" Margin="10" Background="Red">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Row="0" FontSize="16" Content="Описание"/>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<TextBlock Margin="5" Text="{Binding OrderDescription}" TextWrapping="Wrap"/>
</ScrollViewer>
</Grid>
</Grid>
Вот что получается
хотя как я понимаю столбцы должны быть ровно по центру. Добавил также выделение цветом, чтобы блоки было видно наглядно
А также если кликнуть на край окна или попытаться его растянуть, то всё становится верно
Источник: Stack Overflow на русском