Загрузка данных


<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        Title="Задания" Height="600" Width="500">
    <ScrollViewer>
        <StackPanel Margin="10">
            
            <!-- Задание 1 -->
            <TextBlock Text="Задание 1: Диспетчер задач" FontWeight="Bold" Margin="0,10,0,5"/>
            <TextBox x:Name="TbTask" Margin="0,0,0,5"/>
            <Button Content="Добавить" Click="BtnAdd_Click" Margin="0,0,0,5"/>
            <ListBox x:Name="LbTasks" Height="100" Margin="0,0,0,5"/>
            <Button x:Name="BtnDelete" Content="Удалить" IsEnabled="False" Click="BtnDelete_Click"/>
            
            <!-- Задание 2 -->
            <TextBlock Text="Задание 2: Цвета" FontWeight="Bold" Margin="0,15,0,5"/>
            <ListBox x:Name="LbColors" SelectionMode="Extended" Height="80">
                <ListBoxItem Tag="Red">Красный</ListBoxItem>
                <ListBoxItem Tag="Blue">Синий</ListBoxItem>
                <ListBoxItem Tag="Green">Зеленый</ListBoxItem>
                <ListBoxItem Tag="Yellow">Желтый</ListBoxItem>
                <ListBoxItem Tag="Purple">Фиолетовый</ListBoxItem>
            </ListBox>
            <TextBlock x:Name="TbColorCount" Text="Выбрано: 0"/>
            <Button Content="Покрасить фон" Click="BtnColor_Click" Margin="0,5"/>
            
            <!-- Задание 3 -->
            <TextBlock Text="Задание 3: Числа" FontWeight="Bold" Margin="0,15,0,5"/>
            <ListBox x:Name="LbNumbers" Height="80"/>
            <StackPanel Orientation="Horizontal" Margin="0,5">
                <Button Content="+1" Click="BtnPlus1_Click" Width="50" Margin="0,0,5,0"/>
                <Button Content="-1" Click="BtnMinus1_Click" Width="50" Margin="0,0,5,0"/>
                <Button Content="Сумма" Click="BtnSum_Click" Width="50"/>
            </StackPanel>
            <TextBlock x:Name="TbCount" Text="Всего элементов: 0"/>
            
            <!-- Задание 4 -->
            <TextBlock Text="Задание 4: Покупки" FontWeight="Bold" Margin="0,15,0,5"/>
            <ListBox x:Name="LbShop" Height="80">
                <ListBoxItem>Хлеб — 2 шт.</ListBoxItem>
                <ListBoxItem>Молоко — 1 шт.</ListBoxItem>
            </ListBox>
            <StackPanel Orientation="Horizontal" Margin="0,5">
                <Button Content="Добавить" Click="BtnShopAdd_Click" Margin="0,0,5,0"/>
                <Button Content="+1" Click="BtnShopUp_Click" Margin="0,0,5,0"/>
                <Button Content="-1" Click="BtnShopDown_Click"/>
            </StackPanel>
            
        </StackPanel>
    </ScrollViewer>
</Window>

using System;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

public partial class MainWindow : Window
{
    // Задание 3
    ObservableCollection<int> numbers = new ObservableCollection<int>();

    public MainWindow()
    {
        InitializeComponent();
        LbNumbers.ItemsSource = numbers;
        
        // Задание 1: кнопка удалить активна только при выборе
        LbTasks.SelectionChanged += (s, e) => BtnDelete.IsEnabled = LbTasks.SelectedItem != null;
        
        // Задание 2: счётчик выбранных цветов
        LbColors.SelectionChanged += (s, e) => TbColorCount.Text = $"Выбрано: {LbColors.SelectedItems.Count}";
    }

    // ===== Задание 1 =====
    private void BtnAdd_Click(object sender, RoutedEventArgs e)
    {
        if (string.IsNullOrWhiteSpace(TbTask.Text))
        {
            MessageBox.Show("Введите задачу!");
            return;
        }
        LbTasks.Items.Add(TbTask.Text);
        TbTask.Clear();
    }

    private void BtnDelete_Click(object sender, RoutedEventArgs e)
    {
        LbTasks.Items.Remove(LbTasks.SelectedItem);
    }

    // ===== Задание 2 =====
    private void BtnColor_Click(object sender, RoutedEventArgs e)
    {
        if (LbColors.SelectedItem is ListBoxItem item)
        {
            var color = (Color)ColorConverter.ConvertFromString(item.Tag.ToString());
            Background = new SolidColorBrush(color);
        }
        else MessageBox.Show("Выберите цвет!");
    }

    // ===== Задание 3 =====
    private void BtnPlus1_Click(object sender, RoutedEventArgs e)
    {
        numbers.Add(numbers.Count == 0 ? 1 : numbers.Last() + 1);
        UpdateCount();
    }

    private void BtnMinus1_Click(object sender, RoutedEventArgs e)
    {
        if (numbers.Count == 0) { MessageBox.Show("Список пуст!"); return; }
        numbers.RemoveAt(numbers.Count - 1);
        UpdateCount();
    }

    private void BtnSum_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show($"Сумма: {numbers.Sum()}");
    }

    private void UpdateCount() => TbCount.Text = $"Всего элементов: {numbers.Count}";

    // ===== Задание 4 =====
    private void BtnShopAdd_Click(object sender, RoutedEventArgs e)
    {
        LbShop.Items.Add($"Товар {LbShop.Items.Count + 1} — 1 шт.");
    }

    private void ChangeShopQuantity(int delta)
    {
        if (LbShop.SelectedItem is ListBoxItem item)
        {
            string text = item.Content.ToString();
            int pos1 = text.LastIndexOf(' ') - 1; // позиция перед "шт."
            int pos2 = text.LastIndexOf('—') + 2;  // позиция после "— "
            if (int.TryParse(text.Substring(pos2, pos1 - pos2), out int qty))
            {
                qty += delta;
                if (qty < 1) qty = 1;
                item.Content = text.Substring(0, pos2) + qty + " шт.";
            }
        }
    }

    private void BtnShopUp_Click(object sender, RoutedEventArgs e) => ChangeShopQuantity(1);
    private void BtnShopDown_Click(object sender, RoutedEventArgs e) => ChangeShopQuantity(-1);
}