Создание первого приложения .NET MAUI для Windows
Овладейте опытом работы с .NET MAUI, создавая свое первое кроссплатформенное приложение на Windows.
Знакомство
В этом руководстве вы узнаете, как создать и запустить первое приложение .NET MAUI для Windows в Visual Studio 2022 (17.3 или более поздней версии). Мы добавим некоторые функции MVVM Toolkit из .NET Community Toolkit, чтобы улучшить дизайн проекта по умолчанию.
Настройка среды
Если вы еще не настроили среду для разработки .NET MAUI, следуйте шагам для начала работы с .NET MAUI в Windows.
Создание проекта .NET MAUI
Запустите Visual Studio и в окне запуска щелкните Создать новый проект, чтобы создать новый проект:
В окне Создание проекта выберите MAUI в раскрывающемся списке "Все типы проектов", выберите шаблон приложения .NET MAUI и нажмите кнопку Далее:
В окне Настройка нового проекта укажите имя проекта, выберите расположение и нажмите кнопку Далее:
В окне Дополнительные сведения нажмите кнопку Создать:
Дождитесь создания проекта и восстановления зависимостей:
создан проект
На панели инструментов Visual Studio нажмите кнопку "Компьютер Windows", чтобы создать и запустить приложение.
В запущенном приложении нажмите кнопку Click me несколько раз и обратите внимание, что количество нажатий кнопки увеличивается:
Вы только что запустили свое первое приложение .NET MAUI в Windows. В следующем разделе вы узнаете, как добавить функции привязки данных и обмена сообщениями из набора средств MVVM
Устранение неполадок
Если вашему приложению не удалось скомпилироваться, просмотрите устранение известных проблем, которое может содержать решение вашей проблемы.
Добавление набора средств MVVM
Теперь, когда у вас есть первое приложение .NET MAUI, работающее в Windows, давайте добавим некоторые функции набора средств MVVM в проект, чтобы улучшить дизайн приложения.
Щелкните проект правой кнопкой мыши в обозревателе решений
и выберите Управление пакетами NuGet... в контекстном меню.В окне диспетчера пакетов NuGet выберите вкладку "Обзор" и найдите CommunityToolkit.MVVM.
пакет CommunityToolkit.MVVM
Добавьте последнюю стабильную версию пакета CommunityToolkit.MVVM (версия 8.0.0 или более поздней) в проект, нажав Установить.
Закройте окно диспетчера пакетов NuGet
после завершения установки нового пакета. Щелкните проект правой кнопкой мыши и выберите Добавить | Класс из контекстного меню.
В окне Добавление нового элемента, которое появится, назовите класс
MainViewModel
и нажмите Добавить:Класс
MainViewModel
будет целевым объектом привязки данных дляMainPage
. Обновите его так, чтобы он наследовал отObservableObject
в пространстве именCommunityToolkit.Mvvm.ComponentModel
. Это также потребует обновления класса, чтобы он сталpublic
иpartial
.Класс
MainViewModel
будет содержать следующий код. ЗаписьCountChangedMessage
определяет сообщение, которое отправляется при каждом нажатии кнопки "Щелкните здесь", уведомляя представление об изменении. Атрибуты ObservableProperty и RelayCommand, добавленные к членамmessage
иIncrementCounter
, являются генераторами исходного кода, предоставляемыми набором средств MVVM для создания шаблонного кода MVVM для реализацииINotifyPropertyChanged
иIRelayCommand
. Реализация методаIncrementCounter
содержит логику изOnCounterClicked
в MainPage.xaml.cs с изменением для отправки сообщения с новым сообщением счетчика. Позже мы удалим этот код программной части.using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; namespace MauiOnWindows { public sealed record CountChangedMessage(string Text); public partial class MainViewModel : ObservableObject { [ObservableProperty] private string message = "Click me"; private int count; [RelayCommand] private void IncrementCounter() { count++; // Pluralize the message if the count is greater than 1 message = count == 1 ? $"Clicked {count} time" : $"Clicked {count} times"; WeakReferenceMessenger.Default.Send(new CountChangedMessage(message)); } } }
Заметка
Необходимо обновить пространство имен в предыдущем коде, чтобы соответствовать пространству имен в проекте.
Откройте файл MainPage.xaml.cs для редактирования и удаления метода
OnCounterClicked
и поляcount
.Добавьте следующий код в конструктор
MainPage
после вызоваInitializeComponent()
. Этот код получит сообщение, отправленноеIncrementCounter()
вMainViewModel
, и обновит свойствоCounterBtn.Text
новым сообщением, а также покажет новый текст сSemanticScreenReader
.WeakReferenceMessenger.Default.Register<CountChangedMessage>(this, (r, m) => { CounterBtn.Text = m.Text; SemanticScreenReader.Announce(m.Text); });
Вам также потребуется добавить инструкцию
using
в класс:using CommunityToolkit.Mvvm.Messaging;
В
MainPage.xaml
добавьте объявление пространства имен вContentPage
, чтобы найти классMainViewModel
:xmlns:local="clr-namespace:MauiOnWindows"
Добавьте
MainViewModel
в качествеBindingContext
дляContentPage
:<ContentPage.BindingContext> <local:MainViewModel/> </ContentPage.BindingContext>
Обновите
Button
наMainPage
, чтобы использоватьCommand
вместо обработки событияClicked
. Команда привязывается к общедоступному свойствуIncrementCounterCommand
, созданному исходными генераторами набора средств MVVM:<Button x:Name="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Command="{Binding Path=IncrementCounterCommand}" HorizontalOptions="Center" />
Запустите проект еще раз и обратите внимание, что счетчик по-прежнему увеличивается при нажатии кнопки:
Пока проект запущен, попробуйте обновить сообщение "Hello, World!" в первом Label, чтобы оно отображалось как "Hello, Windows!" в MainPage.xaml. Сохраните файл и обратите внимание, что XAML Hot Reload обновляет пользовательский интерфейс, пока приложение работает:
Дальнейшие действия
Узнайте, как создать приложение, которое отображает данные
Связанное содержимое
Ресурсы для обучения .NET MAUI
Windows developer