Код IT
← Каталог

Первая форма WPF — XAML, стили и шаблоны — Шаг 4 — разметка формы MainWindow.xaml

Фрагмент из «Первая форма WPF — XAML, стили и шаблоны»: Шаг 4 — разметка формы MainWindow.xaml.

XML / XAML main.xml
<Window x:Class="NoteKeeper.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:NoteKeeper.ViewModels"
        Title="Заметки"
        Height="520" Width="480"
        MinHeight="400" MinWidth="400"
        Background="{StaticResource BrushBackground}"
        FontFamily="Segoe UI">

    <Window.DataContext>
        <vm:MainViewModel/>
    </Window.DataContext>

    <Grid Margin="20">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!-- Форма ввода -->
        <StackPanel Grid.Row="0" Margin="0,0,0,16">
            <TextBlock Text="Заголовок" Foreground="{StaticResource BrushMuted}" Margin="0,0,0,4"/>
            <TextBox Text="{Binding NewTitle, UpdateSourceTrigger=PropertyChanged}"/>

            <TextBlock Text="Категория" Foreground="{StaticResource BrushMuted}" Margin="0,12,0,4"/>
            <ComboBox ItemsSource="{Binding Categories}"
                      SelectedItem="{Binding SelectedCategory}"
                      Padding="8,6" Margin="0,0,0,12"/>

            <Button Content="Добавить"
                    Command="{Binding AddNoteCommand}"
                    HorizontalAlignment="Left"
                    Style="{StaticResource AccentButtonStyle}"/>
        </StackPanel>

        <TextBlock Grid.Row="1" Text="Список" FontWeight="SemiBold"
                   Foreground="{StaticResource BrushText}" Margin="0,0,0,8"/>

        <!-- Список с DataTemplate -->
        <ListBox Grid.Row="2"
                 ItemsSource="{Binding Notes}"
                 BorderThickness="0"
                 Background="Transparent"
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border Background="{StaticResource BrushSurface}"
                            BorderBrush="{StaticResource BrushBorder}"
                            BorderThickness="1"
                            CornerRadius="8"
                            Padding="12,10"
                            Margin="0,0,0,8">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="{Binding Title}"
                                       FontSize="14"
                                       Foreground="{StaticResource BrushText}"
                                       VerticalAlignment="Center"/>
                            <Border Grid.Column="1"
                                    CornerRadius="12"
                                    Padding="10,4"
                                    VerticalAlignment="Center">
                                <Border.Style>
                                    <Style TargetType="Border">
                                        <Setter Property="Background" Value="#E5E7EB"/>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding Category}" Value="Работа">
                                                <Setter Property="Background" Value="#DBEAFE"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding Category}" Value="Личное">
                                                <Setter Property="Background" Value="#D1FAE5"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding Category}" Value="Идеи">
                                                <Setter Property="Background" Value="#FEF3C7"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Border.Style>
                                <TextBlock Text="{Binding Category}"
                                           FontSize="12"
                                           Foreground="{StaticResource BrushMuted}"/>
                            </Border>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>
<Window x:Class="NoteKeeper.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:NoteKeeper.ViewModels"
        Title="Заметки"
        Height="520" Width="480"
        MinHeight="400" MinWidth="400"
        Background="{StaticResource BrushBackground}"
        FontFamily="Segoe UI">

    <Window.DataContext>
        <vm:MainViewModel/>
    </Window.DataContext>

    <Grid Margin="20">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!-- Форма ввода -->
        <StackPanel Grid.Row="0" Margin="0,0,0,16">
            <TextBlock Text="Заголовок" Foreground="{StaticResource BrushMuted}" Margin="0,0,0,4"/>
            <TextBox Text="{Binding NewTitle, UpdateSourceTrigger=PropertyChanged}"/>

            <TextBlock Text="Категория" Foreground="{StaticResource BrushMuted}" Margin="0,12,0,4"/>
            <ComboBox ItemsSource="{Binding Categories}"
                      SelectedItem="{Binding SelectedCategory}"
                      Padding="8,6" Margin="0,0,0,12"/>

            <Button Content="Добавить"
                    Command="{Binding AddNoteCommand}"
                    HorizontalAlignment="Left"
                    Style="{StaticResource AccentButtonStyle}"/>
        </StackPanel>

        <TextBlock Grid.Row="1" Text="Список" FontWeight="SemiBold"
                   Foreground="{StaticResource BrushText}" Margin="0,0,0,8"/>

        <!-- Список с DataTemplate -->
        <ListBox Grid.Row="2"
                 ItemsSource="{Binding Notes}"
                 BorderThickness="0"
                 Background="Transparent"
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border Background="{StaticResource BrushSurface}"
                            BorderBrush="{StaticResource BrushBorder}"
                            BorderThickness="1"
                            CornerRadius="8"
                            Padding="12,10"
                            Margin="0,0,0,8">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="{Binding Title}"
                                       FontSize="14"
                                       Foreground="{StaticResource BrushText}"
                                       VerticalAlignment="Center"/>
                            <Border Grid.Column="1"
                                    CornerRadius="12"
                                    Padding="10,4"
                                    VerticalAlignment="Center">
                                <Border.Style>
                                    <Style TargetType="Border">
                                        <Setter Property="Background" Value="#E5E7EB"/>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding Category}" Value="Работа">
                                                <Setter Property="Background" Value="#DBEAFE"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding Category}" Value="Личное">
                                                <Setter Property="Background" Value="#D1FAE5"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding Category}" Value="Идеи">
                                                <Setter Property="Background" Value="#FEF3C7"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Border.Style>
                                <TextBlock Text="{Binding Category}"
                                           FontSize="12"
                                           Foreground="{StaticResource BrushMuted}"/>
                            </Border>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>