123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using Avalonia;
- using Avalonia.Controls;
- using Avalonia.Controls.ApplicationLifetimes;
- using Avalonia.Platform.Storage;
- using CommunityToolkit.Mvvm.Input;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics.CodeAnalysis;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Input;
- namespace IViewModel.ViewModels
- {
- public sealed class FileLoadViewModel:DisplayViewModelBase
- {
- private FileLoadViewModel() : base()
- {
- Content = typeof(Views.LoadConfigView);
- Title = nameof(LanguageValueViewModel.MenuLoadConfig);
- }
- static FileLoadViewModel()
- {
- }
- public override bool ShowTop => true;
- public override string IconKey => nameof(IconResourceValueViewModel.LoadConfigGeometry);
- public static FileLoadViewModel Instance { get; } = new FileLoadViewModel();
- public override bool AppendSeparator => false;
- public override string MenuKey => nameof(LanguageValueViewModel.MenuLoadConfig);
- public override string MenuParentKey => nameof(LanguageValueViewModel.MenuFile);
- public override string OKContent => nameof(LanguageValueViewModel.Confirm);
- public override bool CanResize => false;
- public override double Height => 320;
- public override double Width => 620;
- private string filter = "*";
- public override void InitData()
- {
- base.InitData();
- LoadFileAction = null;
- }
- public string Filter
- {
- get => filter;
- set
- {
- if (string.IsNullOrEmpty(value))
- {
- filter = "*";
- }
- else filter = value;
- }
- }
- public ICommand SelectFileCommand => new RelayCommand<string?>(SelectFile);
- [AllowNull]
- public Action<string> LoadFileAction { get; set; }
- private async void SelectFile(string? p)
- {
- if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
- {
- var folder = await TopLevel.GetTopLevel(desktop.MainWindow)!.StorageProvider.OpenFilePickerAsync(new Avalonia.Platform.Storage.FilePickerOpenOptions()
- {
- AllowMultiple = false,
- Title = p == null ? "" : Application.Current?.FindResource(p) + "",
- FileTypeFilter = new FilePickerFileType[]
- {
- new FilePickerFileType($"{(p ==null ?"": Application.Current?.FindResource(p) + "")}"){ Patterns = new []{"*."+Filter } }
- }
- });
- if (folder != null && folder.Count > 0)
- {
- LoadFileAction?.Invoke(folder.First().Path.LocalPath);
- }
- }
- }
- }
- }
|