diff --git a/AvaloniaTest/App.axaml b/AvaloniaTest/App.axaml
index a4961c8..6328114 100644
--- a/AvaloniaTest/App.axaml
+++ b/AvaloniaTest/App.axaml
@@ -1,10 +1,14 @@
-
+
+
+
\ No newline at end of file
diff --git a/AvaloniaTest/AvaloniaTest.csproj b/AvaloniaTest/AvaloniaTest.csproj
index f59f38f..364f45a 100644
--- a/AvaloniaTest/AvaloniaTest.csproj
+++ b/AvaloniaTest/AvaloniaTest.csproj
@@ -15,5 +15,12 @@
None
All
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
diff --git a/AvaloniaTest/MainView.axaml b/AvaloniaTest/MainView.axaml
new file mode 100644
index 0000000..10e5ad9
--- /dev/null
+++ b/AvaloniaTest/MainView.axaml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
diff --git a/AvaloniaTest/MainView.axaml.cs b/AvaloniaTest/MainView.axaml.cs
new file mode 100644
index 0000000..dc451f7
--- /dev/null
+++ b/AvaloniaTest/MainView.axaml.cs
@@ -0,0 +1,89 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Controls.Notifications;
+using Avalonia.Markup.Xaml;
+using Avalonia.Media.Imaging;
+using Avalonia.Platform.Storage;
+using System;
+using System.IO;
+using System.Threading.Tasks;
+
+namespace AvaloniaTest
+{
+ public partial class MainView : NavigationPage
+ {
+ public static MainView Current { get; private set; } = null!;
+
+ private WindowNotificationManager notificationManager = null!;
+
+ public MainView()
+ {
+ InitializeComponent();
+ Current = this;
+ }
+
+ protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
+ {
+ base.OnAttachedToVisualTree(e);
+ notificationManager = new WindowNotificationManager(TopLevel.GetTopLevel(this));
+ }
+
+ ///
+ /// Показывает уведомление с заданным заголовком, сообщением и типом уведомления.
+ ///
+ /// Заголовок
+ /// Содержимое
+ /// Тип уведомления
+ public void ShowNotification(string title, string message, NotificationType type)
+ {
+ notificationManager.Show(new Notification
+ {
+ Message = message,
+ Expiration = TimeSpan.FromSeconds(3),
+ Type = type,
+ Title = title
+ });
+ }
+
+ ///
+ /// Обработчик события нажатия кнопки для выбора изображения и его отображения в Image1.
+ ///
+ /// Отправитель
+ /// Аргументы
+ private async void Button_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ try
+ {
+ var top = TopLevel.GetTopLevel(this);
+ var result = await top!.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
+ {
+ AllowMultiple = false,
+ FileTypeFilter = [FilePickerFileTypes.ImageAll],
+ Title = "Выберите изображение"
+ });
+
+ if (result.Count == 0)
+ return;
+
+ var imagePath = result[0].Path.LocalPath;
+
+ string newImageName = $"{Guid.NewGuid()}{Path.GetExtension(imagePath)}";
+
+ string newImagePath = Path.Combine("Images", newImageName);
+
+ Directory.CreateDirectory("Images");
+
+ File.Copy(imagePath, newImagePath);
+
+ Image1.Source = new Bitmap(newImagePath);
+
+ MainView.Current.ShowNotification("Успех", "Изображение успешно загружено и сохранено.", NotificationType.Success);
+ }
+ catch (Exception ex)
+ {
+ MainView.Current.ShowNotification("Ошибка", $"Не удалось загрузить изображение: {ex.Message}", NotificationType.Error);
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/AvaloniaTest/MainWindow.axaml b/AvaloniaTest/MainWindow.axaml
index 877fdc9..17c5ea9 100644
--- a/AvaloniaTest/MainWindow.axaml
+++ b/AvaloniaTest/MainWindow.axaml
@@ -1,9 +1,11 @@
- Welcome to Avalonia!
+
diff --git a/AvaloniaTest/MainWindow.axaml.cs b/AvaloniaTest/MainWindow.axaml.cs
index 62b2dca..0fd4a3b 100644
--- a/AvaloniaTest/MainWindow.axaml.cs
+++ b/AvaloniaTest/MainWindow.axaml.cs
@@ -8,4 +8,9 @@ public partial class MainWindow : Window
{
InitializeComponent();
}
+
+ private void Button_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+
+ }
}
\ No newline at end of file