次の方法で共有


Windows 用の初めての .NET MAUI アプリをビルドする

Windows で初めてのクロスプラットフォーム アプリを構築することで、.NET MAUI を活用できます。

紹介

このチュートリアルでは、Visual Studio 2022 (17.3 以降) で Windows 用の最初の .NET MAUI アプリを作成して実行する方法について説明します。 .NET Community Toolkit からいくつかの MVVM Toolkit 機能 を追加して、既定のプロジェクトの設計を改善します。

環境の設定

.NET MAUI 開発用に環境をまだ設定していない場合は、「Windowsで .NET MAUI の使用を開始する」手順に従ってください。

.NET MAUI プロジェクトの作成

  1. Visual Studio を起動し、スタート ウィンドウで [新しいプロジェクトの作成] をクリックして新しいプロジェクトを作成します。

    新しいプロジェクトを作成します。

  2. [新しいプロジェクト の作成] ウィンドウで、ドロップダウンから[すべてのプロジェクトの種類]を選択し、[MAUI]を選び、.NET MAUI App テンプレートを選択して、[次へ ] ボタンをクリックする。

    .NET MAUI アプリ テンプレート

  3. [新しいプロジェクト の構成] ウィンドウで、プロジェクトに名前を付け、その場所を選択して、[次へ ] ボタンをクリックします。

    新しいプロジェクトに名前を付けます。

  4. [追加情報] ウィンドウで、[作成] ボタンをクリックします。

    新しいプロジェクトを作成します。

  5. プロジェクトが作成され、その依存関係が復元されるまで待ちます。

    Project が作成されます。

  6. Visual Studio ツール バーで、Windows マシン ボタンを押してアプリをビルドして実行します。

  7. 稼働中のアプリで、Click meボタンを数回押し、ボタンのクリック回数が増えることを確認します。

    MAUI アプリを初めて実行します。

Windows で初めての .NET MAUI アプリを実行しました。 次のセクションでは、MVVM Toolkit からアプリにデータ バインディングとメッセージング機能を追加する方法について説明します。

トラブルシューティング

アプリのコンパイルに失敗した場合は、既知の問題のトラブルシューティングを確認してください。問題の解決策が得られる可能性があります。

MVVM ツールキットの追加

Windows で初めての .NET MAUI アプリを実行したので、MVVM Toolkit の機能をいくつかプロジェクトに追加して、アプリの設計を改善しましょう。

  1. ソリューション エクスプローラー でプロジェクト 右クリックし、コンテキスト メニューから [NuGet パッケージの管理]... を選択します。

  2. NuGet パッケージ マネージャー ウィンドウで、[参照] タブを選択し、CommunityToolkit.MVVMを検索します。

    CommunityToolkit.MVVM パッケージ。

  3. [インストール] をクリックして、CommunityToolkit.MVVM パッケージ (バージョン 8.0.0 以降) の最新で安定したバージョンをプロジェクトに追加します。

  4. 新しいパッケージのインストールが完了したら、NuGet パッケージ マネージャーの ウィンドウを閉じます。

  5. プロジェクトをもう一度右クリックし、コンテキストメニューから [追加] | [クラス] を選択します。

  6. [新しい項目の追加] ウィンドウが表示されたら、クラスにMainViewModelを命名し、追加をクリックします。

    MainViewModel クラスを追加します。

  7. MainViewModel クラスは、MainPageのデータ バインディング ターゲットになります。 CommunityToolkit.Mvvm.ComponentModel 名前空間の ObservableObject から継承するように更新します。また、public および partialされるようにクラスを更新する必要があります。

  8. MainViewModel クラスには、次のコードが含まれます。 CountChangedMessage レコードは、[Click me] ボタンがクリックされるたびに送信されるメッセージを定義し、ビューに変更を通知します。 ObservableProperty および RelayCommand 属性は、message および IncrementCounter メンバーに追加されるソース ジェネレーターであり、MVVM Toolkit によって提供され、INotifyPropertyChanged および IRelayCommand 実装用の MVVM 定型コードを作成します。 IncrementCounter メソッドの実装には、MainPage.xaml.csの OnCounterClicked からのロジックと、新しいカウンター メッセージを含むメッセージを送信するための変更が含まれています。 コードビハインド コードは後で削除されます。

    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));
            }
        }
    }
    

    手記

    前のコードの名前空間を、プロジェクト内の名前空間と一致するように更新する必要があります。

  9. 編集用の MainPage.xaml.cs ファイルを開き、OnCounterClicked メソッドと count フィールドを削除します。

  10. InitializeComponent()の呼び出しの後に、MainPage コンストラクターに次のコードを追加します。 このコードは、MainViewModelIncrementCounter() によって送信されたメッセージを受信し、CounterBtn.Text プロパティを新しいメッセージで更新し、SemanticScreenReaderで新しいテキストを読み上げるようになります。

    WeakReferenceMessenger.Default.Register<CountChangedMessage>(this, (r, m) =>
    {
        CounterBtn.Text = m.Text;
        SemanticScreenReader.Announce(m.Text);
    });
    
  11. クラスに using ステートメントを追加する必要もあります。

    using CommunityToolkit.Mvvm.Messaging;
    
  12. MainPage.xamlで、ContentPage に名前空間宣言を追加して、MainViewModel クラスを見つけることができます。

    xmlns:local="clr-namespace:MauiOnWindows"
    
  13. ContentPageBindingContext として MainViewModel を追加します。

    <ContentPage.BindingContext>
        <local:MainViewModel/>
    </ContentPage.BindingContext>
    
  14. Clicked イベントを処理する代わりに Command を使用するように、MainPageButton を更新します。 このコマンドは、MVVM Toolkit のソース ジェネレーターによって生成される IncrementCounterCommand パブリック プロパティにバインドされます。

    <Button
        x:Name="CounterBtn"
        Text="Click me"
        SemanticProperties.Hint="Counts the number of times you click"
        Command="{Binding Path=IncrementCounterCommand}"
        HorizontalOptions="Center" />
    
  15. プロジェクトをもう一度実行し、ボタンをクリックしてもカウンターがインクリメントされることを確認します。

    [ここをクリック] ボタンを 3 回クリックしました。

  16. プロジェクト実行中に、最初のラベルの「Hello, World!」メッセージを更新して、MainPage.xaml で「Hello, Windows!」を読み取ります。 ファイルを保存すると、アプリ実行中でも XAML ホット リロード によりUIが更新されることに注目してください。

    Hello World は、XAML ホット リロードを使用して Hello Windows に更新されました。

次の手順

.NET MAUI for Windows チュートリアルGraph SDK を利用して、ユーザー Microsoft Graph データを表示するアプリを構築する方法について説明します。

.NET MAUI を学習するための リソース

Windows での Microsoft Graph API と .NET MAUI の使用