"Неправильный" размер элементов управления WPF, C#
Делаю проект WPF в Visual Studio. В визуальном конструкторе всё нормально, в коде всё вроде бы тоже правильно. На всякий случай вот участок код XAML:
<Grid>
<Menu Height="22" VerticalAlignment="Top">
<MenuItem Header="File" FontSize="15">
<MenuItem Header="New"></MenuItem>
<MenuItem Header="Open"></MenuItem>
<Separator/>
<MenuItem Name="ExitButton" Header="Exit" Click="ExitButton_Click"></MenuItem>
</MenuItem>
<MenuItem Header="Edit" FontSize="15"></MenuItem>
<MenuItem Header="Help" FontSize="15"></MenuItem>
</Menu>
<TextBox HorizontalAlignment="Center" Margin="0,22,0,0" Text="TextBox" TextWrapping="Wrap" VerticalAlignment="Top" Width="800" Height="412"/>
</Grid>
Но когда я запускаю приложение то ли главное окно "сжимается", то ли элементы управления "увеличиваются". То же самое и со всякими кнопками и т.д. во всех WPF проектах. Из-за этого приходится постоянно делать отступы от краёв окна.
С чем это связано? Как это можно убрать, если вообще можно?

Ответы (1 шт):
Никогда не ориентируйтесь на визуальный редактор как на истину. Отступы в визуальном редакторе не учитывают визуальный стиль окна WPF для данной операционной системы.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Menu Padding="5">
<Menu.Resources>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="FontSize" Value="15"/>
</Style>
</Menu.Resources>
<MenuItem Header="File">
<MenuItem Header="New"/>
<MenuItem Header="Open"/>
<Separator/>
<MenuItem Name="ExitButton" Header="Exit" Click="ExitButton_Click"/>
</MenuItem>
<MenuItem Header="Edit"/>
<MenuItem Header="Help"/>
</Menu>
<TextBox Grid.Row="1" Margin="5" Text="TextBox" TextWrapping="Wrap"/>
</Grid>
Задавать размеры контролам в пикселях крайне не рекомендуется, управляйте отступами с помощью марджинов и паддингов. Пишите XAML руками.
К тому же, если не указывать размеры в пикселях, контролы будут автоматически подстраиваться при изменении размеров окна пользователем.
