Guía de controles WinUI 3 C++ – Ventanas emergentes flotantes (Popup Notification)

Primero demostramos el control Popup

En XAML añadimos un botón que abre este Popup al pulsarlo. También declaramos un Popup oculto por defecto, que solo se mostrará tras pulsar el botón.

    <StackPanel Spacing="24" VerticalAlignment="Top">

        <!-- Contenedor raíz Popup nativo -->
        <Popup x:Name="MainPopup" Width="320" Height="180">
            <Border Background="White" BorderBrush="Gray" BorderThickness="1" CornerRadius="8" Padding="16">
                <StackPanel Spacing="12">
                    <TextBlock Text="Contenido personalizado del Popup" FontSize="18"/>
                    <TextBlock Text="Este es el contenedor base nativo Popup"/>
                    <Button Content="Cerrar Popup" Click="BtnClosePopup_Click"/>
                </StackPanel>
            </Border>
        </Popup>

        <Button Content="Abrir contenedor Popup nativo" Click="BtnOpenPopup_Click" HorizontalAlignment="Left"
        ToolTipService.ToolTip="Abrir capa Popup base nativa"/>

    </StackPanel>Lenguaje del código: HTML, XML (xml)

Luego creamos el evento de clic BtnOpenPopup_Click que muestra el Popup. La etiqueta <Popup x:Name="MainPopup" Width="320" Height="180"> ...</Popup> crea una ventana flotante oculta por defecto. Dentro contiene un botón <Button Content="Cerrar Popup" Click="BtnClosePopup_Click"/> que cierra el Popup padre al pulsarlo.

Pulsa F12 para generar automáticamente los dos métodos de evento de botón

Archivo cabecera .H

#pragma once

#include "MainWindow.g.h"

namespace winrt::AppWinui::implementation
{
    struct MainWindow : MainWindowT<MainWindow>
    {
    public:
        MainWindow();

        int32_t MyProperty();
        void MyProperty(int32_t value);

        void BtnOpenPopup_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
        void BtnClosePopup_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
    };
}

namespace winrt::AppWinui::factory_implementation
{
    struct MainWindow : MainWindowT<MainWindow, implementation::MainWindow>
    {
    };
}
Lenguaje del código: C++ (cpp)
#include "pch.h"
#include "MainWindow.xaml.h"
#if __has_include("MainWindow.g.cpp")
#include "MainWindow.g.cpp"
#endif

#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Globalization.h>

#include <winrt/Windows.UI.h> //Windows::UI::Colors


// Alias de espacio de nombres global para solucionar errores de clase no encontrada y RoutedEventArgs no definido
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Microsoft::UI::Xaml;
using namespace Microsoft::UI::Xaml::Controls;
using namespace Microsoft::UI::Xaml::Controls::Primitives;


// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.

namespace winrt::AppWinui::implementation
{
    int32_t MainWindow::MyProperty()
    {
        throw hresult_not_implemented();
    }

    void MainWindow::MyProperty(int32_t /* value */)
    {
        throw hresult_not_implemented();
    }

    MainWindow::MainWindow()
    {
        InitializeComponent();
    }
}


void winrt::AppWinui::implementation::MainWindow::BtnOpenPopup_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e)
{
    MainPopup().IsOpen(true);
}

void winrt::AppWinui::implementation::MainWindow::BtnClosePopup_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e)
{
    MainPopup().IsOpen(false);
}
Lenguaje del código: C++ (cpp)

Guía de controles WinUI 3 C++ – Ventanas emergentes flotantes (Popup Notification)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *