Condividi tramite


Aggiungere riquadri secondari dalle app desktop

Un'app desktop, ad esempio un'app WinUI 3 (usando il SDK per app di Windows) o un'app Windows Presentation Foundation (WPF) o Windows Form (WinForms), può aggiungere un riquadro secondario usando un'app in pacchetto (vedi Creazione di un pacchetto MSIX dal codice). Questo era precedentemente noto come Desktop Bridge.

Screenshot dei riquadri secondari

Importante

Richiede Fall Creators Update: è necessario avere come destinazione l'SDK 16299 ed eseguire la build 16299 o successiva per aggiungere riquadri secondari dalle app Desktop Bridge.

L'aggiunta di un riquadro secondario dall'applicazione SDK per app di Windows, WPF o WinForms è molto simile a un'app UWP pura. L'unica differenza è che è necessario specificare l'handle della finestra principale (HWND). Ciò è dovuto al fatto che quando si aggiunge un riquadro, Windows visualizza una finestra di dialogo modale che chiede all'utente di confermare se desidera aggiungere il riquadro. Se l'applicazione desktop non configura l'oggetto SecondaryTile con la finestra proprietario, Windows non sa dove disegnare la finestra di dialogo e l'operazione avrà esito negativo.

Creare un pacchetto dell'app

Se stai creando un'applicazione SDK per app di Windows con WinUI 3, devi usare un'applicazione in pacchetto per aggiungere riquadri secondari. Non sono necessari passaggi aggiuntivi per creare il pacchetto dell'app se si inizia con il modello di app in pacchetto.

Se usi WPF o WinForms e non hai creato un pacchetto dell'app con Desktop Bridge, dovrai farlo prima di poter usare qualsiasi API di Windows Runtime (vedi Compilazione di un pacchetto MSIX dal codice).

Inizializzare e aggiungere un riquadro secondario usando l'interfaccia IInitializeWithWindow

Nota

Questa sezione è per WinUI 3; e per WPF/WinForms con .NET 6 o versione successiva.

  1. Nel file di progetto impostare la proprietà TargetFramework su un valore che consente di accedere alle API di Windows Runtime (vedere .NET 6 e versioni successive: Usare l'opzione Moniker framework di destinazione). Ciò include l'accesso allo spazio dei nomi WinRT.Interop (vedere Chiamare API di interoperabilità da un'app .NET). Ad esempio:

    <PropertyGroup>
      <!-- You can also target other versions of the Windows SDK and .NET; for example, "net6.0-windows10.0.19041.0" -->
      <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
    </PropertyGroup>
    
  2. Inizializzare un nuovo oggetto riquadro secondario esattamente come si farebbe con una normale app UWP. Per altre informazioni sulla creazione e l'aggiunta di riquadri secondari, vedere Aggiungere riquadri secondari.

    // Initialize the tile with required arguments
    var tile = new Windows.UI.StartScreen.SecondaryTile(
        "myTileId5391",
        "Display name",
        "myActivationArgs",
        new Uri("ms-appx:///Assets/Square150x150Logo.png"),
        TileSize.Default);
    
  3. Recuperare un handle di finestra e inizializzare l'oggetto riquadro secondario con tale handle. Nel codice seguente è this un riferimento all'oggetto Window ,che si tratti di una finestra winUI 3, di una finestra WPF o di una finestra WinForms. Per maggiori informazioni, vedere anche Recuperare un handle di finestra (HWND) e Visualizzare oggetti interfaccia utente WinRT che dipendono da CoreWindow.

    var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
    WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
    
  4. Infine, richiedere di aggiungere il riquadro come si farebbe in una normale app UWP.

    // Pin the tile
    bool isPinned = await tile.RequestCreateAsync();
    
    // Here, update UI to reflect whether user can now either unpin or pin
    

Invio di notifiche di riquadro

Importante

Richiede la versione di aprile 2018 17134.81 o successiva: devi eseguire la build 17134.81 o successiva per inviare notifiche di tipo riquadro o badge ai riquadri secondari dalle app Desktop Bridge. Prima di questo aggiornamento di manutenzione di .81, si verificherebbe un'eccezione 0x80070490 Elemento non trovato quando si inviano notifiche di tipo riquadro o badge ai riquadri secondari dalle app Desktop Bridge.

L'invio di notifiche di tipo riquadro o badge è identico a quello delle app UWP. Per iniziare, vedere Inviare una notifica di riquadro locale.

Risorse