| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using Avalonia.Controls;
- using Avalonia.Controls.Presenters;
- using Avalonia.Dialogs;
- using Avalonia.Layout;
- using Avalonia.Markup.Xaml;
- #pragma warning disable 4014
- namespace ControlCatalog.Pages
- {
- public class DialogsPage : UserControl
- {
- public DialogsPage()
- {
- this.InitializeComponent();
- var results = this.FindControl<ItemsPresenter>("PickerLastResults");
- var resultsVisible = this.FindControl<TextBlock>("PickerLastResultsVisible");
- string lastSelectedDirectory = null;
- List<FileDialogFilter>? GetFilters()
- {
- if (this.FindControl<CheckBox>("UseFilters").IsChecked != true)
- return null;
- return new List<FileDialogFilter>
- {
- new FileDialogFilter
- {
- Name = "Text files (.txt)", Extensions = new List<string> {"txt"}
- },
- new FileDialogFilter
- {
- Name = "All files",
- Extensions = new List<string> {"*"}
- }
- };
- }
- this.FindControl<Button>("OpenFile").Click += async delegate
- {
- var result = await new OpenFileDialog()
- {
- Title = "Open file",
- Filters = GetFilters(),
- Directory = lastSelectedDirectory,
- // Almost guaranteed to exist
- InitialFileName = Assembly.GetEntryAssembly()?.GetModules().FirstOrDefault()?.FullyQualifiedName
- }.ShowAsync(GetWindow());
- results.Items = result;
- resultsVisible.IsVisible = result?.Any() == true;
- };
- this.FindControl<Button>("OpenMultipleFiles").Click += async delegate
- {
- var result = await new OpenFileDialog()
- {
- Title = "Open multiple files",
- Filters = GetFilters(),
- Directory = lastSelectedDirectory,
- AllowMultiple = true
- }.ShowAsync(GetWindow());
- results.Items = result;
- resultsVisible.IsVisible = result?.Any() == true;
- };
- this.FindControl<Button>("SaveFile").Click += async delegate
- {
- var result = await new SaveFileDialog()
- {
- Title = "Save file",
- Filters = GetFilters(),
- Directory = lastSelectedDirectory,
- InitialFileName = "test.txt"
- }.ShowAsync(GetWindow());
- results.Items = new[] { result };
- resultsVisible.IsVisible = result != null;
- };
- this.FindControl<Button>("SelectFolder").Click += async delegate
- {
- var result = await new OpenFolderDialog()
- {
- Title = "Select folder",
- Directory = lastSelectedDirectory,
- }.ShowAsync(GetWindow());
- lastSelectedDirectory = result;
- results.Items = new [] { result };
- resultsVisible.IsVisible = result != null;
- };
- this.FindControl<Button>("OpenBoth").Click += async delegate
- {
- var result = await new OpenFileDialog()
- {
- Title = "Select both",
- Directory = lastSelectedDirectory,
- AllowMultiple = true
- }.ShowManagedAsync(GetWindow(), new ManagedFileDialogOptions
- {
- AllowDirectorySelection = true
- });
- results.Items = result;
- resultsVisible.IsVisible = result?.Any() == true;
- };
- this.FindControl<Button>("DecoratedWindow").Click += delegate
- {
- new DecoratedWindow().Show();
- };
- this.FindControl<Button>("DecoratedWindowDialog").Click += delegate
- {
- new DecoratedWindow().ShowDialog(GetWindow());
- };
- this.FindControl<Button>("Dialog").Click += delegate
- {
- var window = CreateSampleWindow();
- window.Height = 200;
- window.ShowDialog(GetWindow());
- };
- this.FindControl<Button>("DialogNoTaskbar").Click += delegate
- {
- var window = CreateSampleWindow();
- window.Height = 200;
- window.ShowInTaskbar = false;
- window.ShowDialog(GetWindow());
- };
- this.FindControl<Button>("OwnedWindow").Click += delegate
- {
- var window = CreateSampleWindow();
- window.Show(GetWindow());
- };
- this.FindControl<Button>("OwnedWindowNoTaskbar").Click += delegate
- {
- var window = CreateSampleWindow();
- window.ShowInTaskbar = false;
- window.Show(GetWindow());
- };
- }
- private Window CreateSampleWindow()
- {
- Button button;
-
- var window = new Window
- {
- Height = 200,
- Width = 200,
- Content = new StackPanel
- {
- Spacing = 4,
- Children =
- {
- new TextBlock { Text = "Hello world!" },
- (button = new Button
- {
- HorizontalAlignment = HorizontalAlignment.Center,
- Content = "Click to close",
- IsDefault = true
- })
- }
- },
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- button.Click += (_, __) => window.Close();
- return window;
- }
- Window GetWindow() => (Window)this.VisualRoot;
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- }
- }
- }
|