using Microsoft.Win32; using NBAManagement.Models; using NBAManagment.Entities; using NBAManagment.Filter; using System; using System.Collections.Generic; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace NBAManagment { /// /// Логика взаимодействия для PhotosPage.xaml// /// public partial class PhotosPage : Window { private const int PAGE_ELEMENT_COUNT = 12; public PagedEnumerable PagedImage { get; private set; } public int PageNum { get => PagedImage.CurrentPageNum; set { PagedImage.CurrentPageNum = value; UpdateBindings(); } } public PhotosPage() { InitializeComponent(); using (var context = new PracticeNBAEntities()) // Создание экземпляра контекста { var images = context.Image .OrderByDescending(p => p.CreateTime) .ToList(); // Преобразование List в List var pagedImages = images.Select(img => new NBAManagement.Models.Image { Id = img.IdImage, CreateTime = img.CreateTime ?? DateTime.MinValue, // Замените на подходящее значение по умолчанию // Другие свойства... }).ToList(); PagedImage = new PagedEnumerable(pagedImages, PAGE_ELEMENT_COUNT); DataContext = this; } } public void UpdateBindings() { var dataContext = DataContext; DataContext = null; DataContext = dataContext; } private void FirstPage(object sender, RoutedEventArgs e) { PageNum = 1; } private void PriveusPage(object sender, RoutedEventArgs e) { PageNum--; } private void NextPage(object sender, RoutedEventArgs e) { PageNum++; } private void LastPage(object sender, RoutedEventArgs e) { PageNum = PagedImage.PageCount; } private NBAManagement.Models.Image pictureToDownload; private void DownloadImage(object sender, RoutedEventArgs e) { var saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Png | *.png"; downloadPoput.IsOpen = false; if (saveFileDialog.ShowDialog() != true) return; if (!saveFileDialog.CheckPathExists) { MessageBox.Show("Путь несуществует", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } pictureToDownload.SaveAsFile(saveFileDialog.FileName, ImageFormat.Png); } private void DownloadPageImages(object sender, RoutedEventArgs e) { var folderDialog = new System.Windows.Forms.FolderBrowserDialog(); if (folderDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; int i = 0; foreach (var item in PagedImage) { item.SaveAsFile($@"{folderDialog.SelectedPath}/picture{++i}.png", ImageFormat.Png); } MessageBox.Show("Файлы успешно записаны на диск"); } private void ShowDownloadPoput(object sender, MouseButtonEventArgs e) { pictureToDownload = (NBAManagement.Models.Image)((Button)sender).DataContext; downloadPoput.IsOpen = true; } } }