Сборка приложения .NET MAUI для Windows
Получите практические навыки с .NET MAUI, создав свое первое кроссплатформенное приложение в Windows.
Введение
В этом руководстве описано, как создать и запустить первое приложение .NET MAUI для Windows в Visual Studio 2022 (17.3 или более поздней версии). Мы добавим некоторые функции MVVM Toolkit из набора средств сообщества .NET , чтобы улучшить проектирование проекта по умолчанию.
Настройка среды
Если вы еще не настроили среду для разработки .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 (версии 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++;
if (count == 1)
message = $"Clicked {count} time";
else
message = $"Clicked {count} times";
WeakReferenceMessenger.Default.Send(new CountChangedMessage(message));
}
}
}
Примечание
Вам потребуется обновить пространство имен в предыдущем коде в соответствии с пространством имен в проекте.
Откройте файл MainPage.xaml.cs для редактирования и удалите
OnCounterClicked
метод иcount
поле .Добавьте следующий код в
MainPage
конструктор после вызоваInitializeComponenent()
метода . Этот код получит сообщение, отправленное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
public, созданному генераторами источника набора средств 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!" в первой метке до "Hello, Windows!" в Файле MainPage.xaml. Сохраните файл и обратите внимание, что Горячая перезагрузка XAML обновляет пользовательский интерфейс во время работы приложения:
Дальнейшие действия
Узнайте, как создать приложение, которое отображает данные Microsoft Graph для пользователя, используя пакет SDK Graph в руководстве по .NET MAUI для Windows.
Связанные темы
Windows developer
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по