Сборка приложения .NET MAUI для Windows
Получите практические сведения с помощью .NET MAUI, создав первое кроссплатформенное приложение в Windows.
Введение
В этом руководстве вы узнаете, как создать и запустить первое приложение .NET MAUI для Windows в Visual Studio 2022 (17.3 или более поздней версии). Мы добавим некоторые функции набора средств MVVM из набора средств сообщества .NET, чтобы улучшить проект по умолчанию.
Настройка среды
Если вы еще не настроили среду для разработки .NET MAUI, выполните действия, описанные в статье " Начало работы с .NET MAUI в Windows".
Создание проекта .NET MAUI
- Запустите Visual Studio и в окне запуска нажмите кнопку "Создать проект ", чтобы создать новый проект:
- В окне "Создание проекта" выберите MAUI в раскрывающемся списке "Все типы проектов", выберите шаблон приложения .NET MAUI и нажмите кнопку "Далее":
- В окне "Настройка нового проекта" укажите имя проекта, выберите расположение и нажмите кнопку "Далее":
- В окне "Дополнительные сведения" нажмите кнопку "Создать":
- Дождитесь создания проекта и восстановления зависимостей:
На панели инструментов Visual Studio нажмите кнопку "Компьютер Windows", чтобы создать и запустить приложение.
В работающем приложении нажмите кнопку "Щелкните меня" несколько раз и обратите внимание, что количество нажатий кнопки увеличивается:
Вы только что запустили свое первое приложение .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
элементам, являются генераторами источников, предоставляемыми набором средств MVM для создания стандартного кода 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
свойству, созданному генераторами исходного набора средств 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 как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по