Не могу поместить кнопку на панель в форме WPF C#
Вот код:
<DockPanel x:Name="panelButtonsLeftMenu"
Background="#E6EBEF"
Height="770" Margin="0,30,791,0" VerticalAlignment="Top" Width="219">
<DockPanel x:Name="panelLogo" Height="100" LastChildFill="False" VerticalAlignment="Top" Width="219">
<Label Content="LOGO" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Height="100" Margin="0,0,0,0" Width="219" FontSize="48" FontFamily="SF Pro Display" FontWeight="Bold"/>
</DockPanel>
<DockPanel Height="468" LastChildFill="False" VerticalAlignment="Top" Width="100" Margin="0,302,0,0"/>
</DockPanel>
<DockPanel x:Name="pnlBtnItem1" DockPanel.Dock="Top"
Width="219" VerticalAlignment="Top" Margin="0,129,0,0" LastChildFill="False" Height="17" HorizontalAlignment="Left"/>
<DockPanel x:Name="panelButtonsLeftMenu_Copy"
Background="#F6F6F6"
Height="770" Margin="219,30,0,0" VerticalAlignment="Top">
<DockPanel x:Name="panelLogo1" Height="100" LastChildFill="False" VerticalAlignment="Top" Width="219"/>
<DockPanel Height="468" LastChildFill="False" VerticalAlignment="Top" Width="100" Margin="0,302,0,0"/>
</DockPanel>
Отмечу, что на WPF перешел недавно, еще одна проблема к уже имеющейся — кнопка, которую пытался разместить до этого, оказалась под панелью...
В общем набыдлокодил, прошу помощи, коллеги :)
Прикрепил пример, как должно быть:

Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Как-то так можно
<Window x:Class="WpfApp2.MainWindow"
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:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid Background="LightGray">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="DockPanel">
<Setter Property="Margin" Value="0,5"/>
</Style>
<Style TargetType="Rectangle">
<Setter Property="Margin" Value="5"/>
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="Fill" Value="Gray"/>
<Setter Property="Stroke" Value="Black"/>
<Setter Property="StrokeThickness" Value="1"/>
<Setter Property="Width" Value="20"/>
<Setter Property="Height" Value="20"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0"/>
</Style>
</Grid.Resources>
<StackPanel SnapsToDevicePixels="True">
<Ellipse Width="40" Height="40" StrokeThickness="1" Stroke="Black" Fill="Gray" Margin="10"/>
<TextBlock Text="Пользователь" TextAlignment="Center" FontWeight="Bold"/>
<TextBlock Text="текст пользователя"/>
<DockPanel Background="White">
<TextBlock Text="Главная"/>
<Rectangle/>
</DockPanel>
<DockPanel>
<TextBlock Text="Статистика"/>
<Rectangle/>
</DockPanel>
<DockPanel>
<TextBlock Text="Календарь"/>
<Rectangle/>
</DockPanel>
<DockPanel>
<TextBlock Text="Контакты"/>
<Rectangle/>
</DockPanel>
</StackPanel>
<DockPanel Grid.Row="2">
<TextBlock Text="Настройки"/>
<Rectangle/>
</DockPanel>
</Grid>
<Grid Grid.Column="1">
<TextBlock Margin="5" Text="Основная часть окна"/>
</Grid>
</Grid>
</Window>
Я показал просто XAML визуал. Сам больше склоняюсь к MVVM и технологичным решениям, например это решение мне нравится. Другими словами, состав меню должен быть списком и из чего-то формироваться, а не просто захардкожен в разметку. То есть вместо StackPanel будет ListBox или любой другой ItemsControl. При этом WPF позволяет изменить стиль любого контрола до неузнаваемости. А Button здесь не подходит.
