Как заменить Acr.UserDialogs в MAUI на проект WinUI3?

Я переношу проект Xamarin с UWP в проект .NET MAUI с WinUI 3. В моем проекте Xamarin я использовал Acr.UserDialogs.IProgressDialog и Acr.UserDialogs.UserDialogs.Instance.Alert для отображения диалоговых окон и оповещений о ходе выполнения. Поскольку Acr.UserDialogs не поддерживает платформы за пределами Android, iOS и UWP, мне нужно найти эквивалентное решение в MAUI с WinUI 3.

Вот мой текущий код UWP:

использование Acr.UserDialogs;

общедоступный класс ImportDataForWin: IImportDataForWin { частный прогресс IProgressDialog;

public async Task ImportData()
{
    var picker = new Windows.Storage.Pickers.FileOpenPicker
    {
        ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail,
        SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary
    };

    picker.FileTypeFilter.Add(".xlsx");
    picker.FileTypeFilter.Add(".xls");

    var file = await picker.PickSingleFileAsync();

    if (file != null)
    {
        var config = new ProgressDialogConfig()
            .SetTitle("Importing Data")
            .SetIsDeterministic(false);

        progress = UserDialogs.Instance.Progress(config);
        progress.PercentComplete = 0;
        progress.Show();

        // Some code
        var countMax = itemsToAdd.Count();
        var rowCount = 0;
        foreach (var item in itemsToAdd)
        {
            rowCount++;
            await SaveData(item);
            progress.PercentComplete = (rowCount * 100) / countMax;
        }
        progress.Hide();

        UserDialogs.Instance.Alert("errorMessage");
    }
}

}

Как я могу добиться аналогичной функциональности в MAUI с WinUI 3?

В частности, мне нужна помощь в:

Отображение диалога хода выполнения во время импорта данных. Отображение диалогового окна предупреждения, когда импорт завершен или возникла ошибка.

Будем очень признательны за любые рекомендации или примеры кода.

Вы проверили всплывающее окно для Мауи?

Liyun Zhang - MSFT 01.07.2024 12:32

Да, я рассматривал возможность использования всплывающих окон в MAUI, но не совсем уверен, как их реализовать для отображения диалоговых окон и предупреждений о ходе выполнения. Не могли бы вы привести пример или указать мне на некоторые ресурсы, демонстрирующие, как использовать всплывающие окна для этой цели в проекте MAUI с WinUI 3?

Monal 01.07.2024 18:18

Я привел пример кода в своем ответе. Вы можете это проверить.

Liyun Zhang - MSFT 02.07.2024 12:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
112
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Индикатор выполнения Мауи (с использованием):

https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.controls.progressbar?view=net-maui-8.0

Всплывающие окна Мауи («оповещения»; действия; подсказки):

https://learn.microsoft.com/en-us/dotnet/maui/user-interface/pop-ups?view=net-maui-8.0

Я создал образец отображения индикатора выполнения во всплывающем окне:

Код в xaml:

toolkit:Popup xmlns = "http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit = "http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class = "MauiApp1.PopupTest">
    <VerticalStackLayout HeightRequest = "100" WidthRequest = "200">
        <ProgressBar HeightRequest = "50" Progress = "{Binding Progress}" VerticalOptions = "Center" ProgressColor = "Red"/>
    </VerticalStackLayout>
</toolkit:Popup>

Код всплывающего окна в классе:

public partial class PopupTest : Popup, INotifyPropertyChanged
{
     private double progress;
    public event PropertyChangedEventHandler PropertyChanged;
    public double Progress
    {
        get => progress;
        set
        {
            if (progress != value)
            {
                progress = value;
                OnPropertyChanged(); // reports this property
            }
        }
    }
    public PopupTest()
     {     
            InitializeComponent();
        BindingContext = this;
    }
    public void OnPropertyChanged([CallerMemberName] string name = "") =>
       PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
 
}

И отобразите его на странице содержимого:

var popup = new PopupTest();
this.ShowPopup(popup);

Для получения дополнительной информации вы можете обратиться к официальной ссылке на документ, предоставленной мной и Джерри Шмитцем.

Другие вопросы по теме