WPF. Правильная разметка главного окна
Всем добрый день!!! Проектирую под свою программу визуальный интерфейс, пишу разметку xaml-кода.
<Window x:Class="URLDuplicate.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="URLDuplicate" Height="450" Width="800" MinHeight="350" MinWidth="450"
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" WindowStartupLocation="CenterScreen" Icon="/Resources/MainIcon.png">
<!-- Определяем ресурсы для окна -->
<Window.Resources>
<!-- Определяем стиль для кнопки с ключом "SearchButtonStyle" -->
<Style x:Key="SearchButtonStyle" TargetType="Button">
<!-- Задаем фоновый цвет кнопки -->
<!--<Setter Property="Background" Value="#FF1E90FF"/>-->
<Setter Property="Background" Value="#41A5EE"/>
<!-- Задаем цвет текста на кнопке -->
<Setter Property="Foreground" Value="White"/>
<!-- Задаем минимальную ширину кнопки -->
<Setter Property="MinWidth" Value="75"/>
<!-- Определяем шаблон кнопки -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<!-- Определяем внешний вид кнопки через Border -->
<Border Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Padding="{TemplateBinding Padding}">
<!-- Определяем, как будет выводиться содержимое кнопки -->
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto"/>
<RowDefinition Height="318*"/>
<RowDefinition Height="35"/>
</Grid.RowDefinitions>
<Menu Grid.Row="0" Margin="10,0,0,10" Background="{x:Null}" >
<MenuItem Header="Меню" Padding="0,0,0,0">
<MenuItem x:Name="OpenFile" Header="Открыть" Click="OpenFile_Click" />
<MenuItem x:Name="SaveFile" Header="Сохранить" Click="SaveFile_Click" />
</MenuItem>
</Menu>
<TextBlock HorizontalAlignment="Left" Margin="10,20,0,0" Grid.Row="0" TextWrapping="Wrap" Text="Путь к файлу:" VerticalAlignment="Top" FontWeight="Bold"/>
<Grid Grid.Row="1" Margin="10,5,10,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="PathTextBox" Text="D:\[Kawaiika-Raws] (2013) Shingeki no Kyojin S1 [BDRip 1920x1080 HEVC FLAC]\Bonus\Scans" VerticalAlignment="Center" Margin="0,0,10,0" Grid.Column="0" Background="{x:Null}"/>
<Button x:Name="SearchButton" Content="Поиск" Style="{StaticResource SearchButtonStyle}" Click="SearchButton_Click" Grid.Column="1"/>
</Grid>
<TextBlock Grid.Row="2" TextWrapping="Wrap" Text="Результат" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,5,0,5"/>
<ScrollViewer Grid.Row="3" VerticalScrollBarVisibility="Auto" Margin="10,0,10,0">
<TextBox x:Name="ResultTextBox" TextWrapping="Wrap" Text="Ваш неизменяемый текст здесь" IsReadOnly="True" Background="{x:Null}"/>
</ScrollViewer>
<StatusBar Grid.Row="4" Margin="10,0,10,10" Background="{x:Null}" >
<StatusBarItem>
<Image x:Name="StatusBarIcon" Source="Resources/Good.png" />
</StatusBarItem>
<Separator/>
<StatusBarItem>
<TextBlock Text="Режим работы: Редактирование"/>
</StatusBarItem>
</StatusBar>
</Grid>
Есть TextBlock "Путь к файлу:". Как бы я не пытался, он по отступам сверху ориентируется не на элемент управления Menu, а считает отступ от верха, т.е. налезает на Menu. Пробовал его в StackPanel вместе с текстбоксом и кнопкой ставить, пробовал группировать с Menu - все это в итоге с элементом управления Menu плохо взаимодействует. Как вписать этот Textblock, чтоб он по отступам нормально вписался? Да и вообще, можете ли мне дать советы по разметке? Как лучше размещать элементы управления? Кто-то делает сложную сетку, кто-то спамит StackPanel'ом, у меня вот сетка, а в сетке еще сетка (думаю, это тоже не совсем правильно)... P.S. Гугл не помог, ChatGPT по итогу сам запутался)