Partilhar via


Crie um aplicativo Hello World usando C# e WinUI 3 / Windows App SDK

Neste tutorial, usaremos o Visual Studio 2022 e o WinUI 3 / Windows App SDK para criar um aplicativo da área de trabalho do Windows que exibe "Hello world!" quando iniciado:

O aplicativo 'Hello world' que estamos criando.

Este tutorial destina-se a iniciantes e não faz suposições sobre sua familiaridade com o desenvolvimento da área de trabalho do Windows.

Pré-requisitos

Este tutorial usa o Visual Studio e se baseia no modelo de aplicativo em branco WinUI 3. Para se configurar, siga as instruções em Introdução ao WinUI. Você instalará o Visual Studio, configurá-lo-á para desenvolver aplicativos com WinUI, criará o projeto Hello World e garantirá que você tenha a versão mais recente do WinUI.

Quando tiver feito isso, volte aqui para saber mais sobre o projeto Hello World e fazer algumas atualizações nele.

Revisar o projeto de aplicativo em branco

Os modelos de projeto WinUI no Visual Studio contêm tudo o que você precisa para criar e executar seu aplicativo. O modelo de Aplicação em Branco cria uma janela com um botão interativo que se apresenta assim quando o executa no modo de depuração.

Projeto modelo construído executando

Clique no botão Click Me para uma demonstração de como manipular eventos:

O botão 'Clique em mim'

Nesse caso, um Button evento Click do controle está vinculado ao manipulador de eventos myButton_Click localizado em MainWindow.xaml.cs:

O manipulador de eventos do botão 'Click Me', localizado no arquivo de código associado da janela principal

Embora MainWindow.xaml.cs contenha a lógica de negócios preocupações da nossa janela principal na forma de um arquivo code-behind, sua apresentação preocupações vivem em MainWindow.xaml:

A marcação XML do botão 'Clique em mim', localizada no arquivo de marcação da janela principal

Essa separação entre a lógica de negócios e as preocupações de apresentação permite a ligação de dados e eventos à interface de utilizador da sua aplicação, seguindo um padrão consistente de desenvolvimento de aplicações.

A estrutura de arquivos do projeto

Vamos revisar a estrutura de arquivos do projeto antes de fazer alterações no código. Isso está localizado no Solution Explorer.

Dica

Para localizar recursos como o Gerenciador de Soluções, clique em Pesquisar na barra de navegação e use a opção Pesquisa de Recursos. Pesquisa de funcionalidades

Atualmente, a estrutura de arquivos do projeto tem esta aparência:

Visão geral da estrutura de arquivos

Esta tabela descreve os ficheiros, começando por cima e trabalhando para baixo:

Nome do ficheiro e
Número de referência da imagem
Descrição
Solution 'Hello World'
1.
Este é um arquivo de solução , um contêiner lógico para seus projetos . Os projetos geralmente são aplicativos, mas também podem oferecer suporte a bibliotecas de classes.
Hello World
2.
Este é um arquivo de projeto , um contêiner lógico para os arquivos do seu aplicativo.
Dependencies
3.
Seu aplicativo depende de estruturas (como .NET e o Windows SDK) e pacotes (como Windows App SDK). À medida que você introduz funcionalidades mais sofisticadas e bibliotecas de terceiros em seu aplicativo, dependências adicionais aparecerão aqui.
Properties
4.
Por convenção, os projetos WinUI 3 colocam os perfis de publicação e os ficheiros de configuração de lançamento nesta pasta.
PublishProfiles
5.
Os seus perfis de publicação especificam a configuração de publicação da sua aplicação em várias plataformas.
launchSettings.json
6.
Esse arquivo permite configurar iniciar perfis que podem ser usados ao executar seu aplicativo via dotnet run.
Assets
7.
Esta pasta contém o logótipo, imagens e outros ativos multimédia da aplicação.
app.manifest
8.
Este ficheiro de manifesto da aplicação contém a configuração relacionada com a forma como o Windows apresenta a sua aplicação quando instalada nos dispositivos do utilizador.
App.xaml
9.
Esse arquivo de marcação especifica os recursos compartilhados e acessíveis globalmente dos quais seu aplicativo depende.
App.xaml.cs
10.
Esse arquivo code-behind representa o ponto de entrada para a lógica de negócios do seu aplicativo. Ele é responsável por criar e ativar uma instância do seu MainWindow.
MainWindow.xaml
11.
Esse arquivo de marcação contém as preocupações de apresentação para a janela principal do seu aplicativo.
MainWindow.xaml.cs
12.
Esse arquivo code-behind contém as preocupações de lógica de negócios associadas à janela principal do seu aplicativo.
Package.appxmanifest
13.
Este arquivo de manifesto do pacote permite configurar informações do editor, logotipos, arquiteturas de processador e outros detalhes que determinam como seu aplicativo aparece na Windows Store.

Exibir "Olá mundo!"

Para exibir "Olá mundo!" em vez do botão "Clique em mim", navegue até MainWindow.xaml. Você deve ver a marcação XAML de um controle StackPanel:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
   <Button x:Name="myButton" Click="myButton_Click">Click Me</Button>
</StackPanel>

Dica

Você frequentemente consultará os documentos de referência de API ao desenvolver aplicações Windows. Os documentos de referência do StackPanel informam mais sobre o controlo StackPanel e como personalizá-lo.

Vamos atualizar o controle StackPanel para exibir Hello world! com texto vermelho:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
    <TextBlock x:Name="myText" Text="Hello world!" Foreground="Red"/>
</StackPanel>

Se você tentar executar seu aplicativo agora, o Visual Studio lançará um erro nos moldes de The name 'myButton' does not exist in the current context. Isso ocorre porque atualizamos a camada de apresentação com um novo controle, mas não atualizamos a lógica de negócios do controle antigo em nosso arquivo code-behind.

Navegue até MainWindow.xaml.cs e exclua o manipulador de eventos myButton_Click. Podemos fazer isso porque substituímos o botão Click me interativo por texto estático Hello world!. A lógica de negócios da nossa janela principal agora deve ter esta aparência:

public sealed partial class MainWindow : Window
{
    public MainWindow()
    {
        this.InitializeComponent();
    }

    // ↓ you can delete this ↓
    //private void myButton_Click(object sender, RoutedEventArgs e)
    //{
    //    myButton.Content = "Clicked";
    //}
}

Redefina seu aplicativo selecionando Build > Rebuild Solution no menu ou pressionando Ctrl + Shift + B. Em seguida, inicie seu aplicativo novamente clicando no botão "Iniciar" na barra de ferramentas do Visual Studio ou pressionando F5.

O aplicativo será atualizado e você verá uma Hello world!vermelha:

Um vermelho 'Olá mundo!'

Atualizar a barra de título do aplicativo

Adicione this.Title = "Hello world!"; ao ficheiro code-behind MainWindow.xaml.cs.

public MainWindow()
{
    this.InitializeComponent();
    this.Title = "Hello world!"; // <- this is new
}

Se reiniciar a aplicação, deverá ver Hello world! no corpo e na barra de título:

O aplicativo 'Olá, mundo!' que estamos criando.

Parabéns;! Você criou seu primeiro aplicativo Windows App SDK / WinUI 3.

Recapitulação

Veja o que você realizou neste tutorial:

  1. Você começou com o modelo de projeto do Visual Studio.
  2. Você experimentou um manipulador de eventos que vinculou a de eventos de um controle de a uma atualização da interface do usuário.
  3. Você se familiarizou com a convenção de separar as preocupações de apresentação de lógica de negócios usando arquivos de marcação XAML fortemente acoplados e arquivos code-behind C#, respectivamente.
  4. Você revisou a estrutura de arquivodo projeto padrão WinUI 3 .
  5. Você modificou a camada de apresentação (marcação XAML) e a lógica de negócios (code-behind) para dar suporte a um novo controle TextBlock dentro de um StackPanel.
  6. Você revisou os documentos de referência para melhor compreender as propriedades do controlo StackPanel.
  7. Você atualizou a barra de título da sua janela principal.

Arquivos de código completos

<!-- MainWindow.xaml -->
<Window
    x:Class="Hello_World.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Hello_World"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock x:Name="myText" Text="Hello world!" Foreground="Red"/>
    </StackPanel>
</Window>
// MainWindow.xaml.cs
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;

namespace Hello_World
{
    public sealed partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();
            this.Title = "Hello world!";
        }
    }
}
<!-- App.xaml -->
<Application
    x:Class="Hello_World.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Hello_World">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
                <!-- Other merged dictionaries here -->
            </ResourceDictionary.MergedDictionaries>
            <!-- Other app resources here -->
        </ResourceDictionary>
    </Application.Resources>
</Application>
// App.xaml.cs
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using Microsoft.UI.Xaml.Shapes;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;

namespace Hello_World
{
    public partial class App : Application
    {
        public App()
        {
            this.InitializeComponent();
        }

        protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
        {
            m_window = new MainWindow();
            m_window.Activate();
        }

        private Window m_window;
    }
}

Perguntas Frequentes

P: O que significa "embalado"?

Os aplicativos do Windows podem ser entregues aos usuários finais usando uma variedade de formatos de empacotamento de aplicativos. Ao trabalhar com WinUI e SDK de Aplicativos Windows, aplicativos empacotados usam o MSIX para agrupar seu aplicativo de modo a oferecer instalação e atualizações convenientes aos usuários finais. Visite Arquitetura de implantação e visão geral de aplicativos dependentes de estrutura para saber mais.

P: Posso usar o VS Code para criar aplicativos WinUI?

Embora tecnicamente possível, é altamente recomendável usar o Visual Studio 2022 para criar aplicativos de área de trabalho com WinUI e Windows App SDK. Consulte as FAQ do desenvolvedor do Windows para obter mais informações.

P: Posso usar C++ para criar aplicativos WinUI?

Sim! Para obter mais informações, consulte Introdução ao C++/WinRT.