Неверно рассчитывается ширина столбцов Grid в WPF

Рейтинг: 0Ответов: 0Опубликовано: 19.04.2023

При запуске окна с установленным 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>

Вот что получается

Картинка

хотя как я понимаю столбцы должны быть ровно по центру. Добавил также выделение цветом, чтобы блоки было видно наглядно

А также если кликнуть на край окна или попытаться его растянуть, то всё становится верно

Картинка

Ответы

Ответов пока нет.