Aggiungere riquadri secondari alla barra delle applicazioni
Nota
I riquadri vive sono una funzionalità di Windows 10 non supportata nelle versioni successive di Windows. Per le nuove app, è consigliabile seguire le indicazioni correnti per le icone dell'app.
Proprio come l'aggiunta di riquadri secondari a Start, è possibile aggiungere riquadri secondari alla barra delle applicazioni, consentendo agli utenti di accedere rapidamente al contenuto all'interno dell'app.
Importante
API con accesso limitato: questa API è una funzionalità di accesso limitato. Per usare questa API, contatta taskbarsecondarytile@microsoft.com.
Richiede l'aggiornamento di ottobre 2018: è necessario specificare l'SDK 17763 di destinazione ed eseguire la build 17763 o successiva per aggiungere alla barra delle applicazioni.
Indicazioni
Un riquadro secondario offre agli utenti un modo coerente ed efficiente per accedere direttamente a aree specifiche all'interno di un'app. Anche se un utente sceglie se aggiungere o meno un riquadro secondario alla barra delle applicazioni, le aree aggiungibili in un'app sono determinate dallo sviluppatore. Per altre indicazioni, vedere Linee guida per i riquadri secondari.
1. Determina se l'API esiste e sblocca Accesso limitato
I dispositivi meno recenti non hanno le API di aggiunta della barra delle applicazioni (se vuoi usare le versioni precedenti di Windows 10). Pertanto, non dovresti visualizzare un pulsante di aggiunta su questi dispositivi che non sono in grado di aggiungere.
Inoltre, questa funzionalità è bloccata in Accesso limitato. Per ottenere l'accesso, contatta Microsoft. Le chiamate API a TaskbarManager.RequestPinSecondaryTileAsync, TaskbarManager.IsSecondaryTilePinnedAsync e TaskbarManager.TryUnpinSecondaryTileAsync avranno esito negativo con un'eccezione di accesso negato. Le app non possono usare questa API senza autorizzazione e la definizione dell'API può cambiare in qualsiasi momento.
Usa il metodo ApiInformation.IsMethodPresent per determinare se sono presenti le API. Usa quindi l'API LimitedAccessFeatures per provare a sbloccare l'API.
if (ApiInformation.IsMethodPresent("Windows.UI.Shell.TaskbarManager", "RequestPinSecondaryTileAsync"))
{
// API present!
// Unlock the pin to taskbar feature
var result = LimitedAccessFeatures.TryUnlockFeature(
"com.microsoft.windows.secondarytilemanagement",
"<tokenFromMicrosoft>",
"<publisher> has registered their use of com.microsoft.windows.secondarytilemanagement with Microsoft and agrees to the terms of use.");
// If unlock succeeded
if ((result.Status == LimitedAccessFeatureStatus.Available) ||
(result.Status == LimitedAccessFeatureStatus.AvailableWithoutToken))
{
// Continue
}
else
{
// Don't show pin to taskbar button or call any of the below APIs
}
}
else
{
// Don't show pin to taskbar button or call any of the below APIs
}
2. Ottieni l'istanza di TaskbarManager
Le app di Windows possono essere eseguite su un'ampia gamma di dispositivi; non tutti supportano la barra delle applicazioni. Al momento, solo i dispositivi desktop supportano la barra delle applicazioni. Inoltre, la presenza della barra delle applicazioni potrebbe venire e andare. Per verificare se la barra delle applicazioni è attualmente presente, chiama il metodo TaskbarManager.GetDefault e verifica che l'istanza restituita non sia Null. Non visualizzare un pulsante di aggiunta se la barra delle applicazioni non è presente.
È consigliabile mantenere l'istanza per la durata di una singola operazione, ad esempio l'aggiunta, e quindi afferrare una nuova istanza alla successiva esecuzione di un'altra operazione.
TaskbarManager taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager != null)
{
// Continue
}
else
{
// Taskbar not present, don't display a pin button
}
3. Controlla se il riquadro è attualmente aggiunto alla barra delle applicazioni
Se il riquadro è già stato aggiunto, dovrebbe essere visualizzato un pulsante di annullamento. Puoi usare il metodo IsSecondaryTilePinnedAsync per verificare se il riquadro è attualmente bloccato (gli utenti possono rimuoverlo in qualsiasi momento). In questo metodo si passa l'elemento TileId
del riquadro che si vuole sapere è bloccato.
if (await taskbarManager.IsSecondaryTilePinnedAsync("myTileId"))
{
// The tile is already pinned. Display the unpin button.
}
else
{
// The tile is not pinned. Display the pin button.
}
4. Controllare se l'aggiunta è consentita
L'aggiunta alla barra delle applicazioni può essere disabilitata da Criteri di gruppo. La proprietà TaskbarManager.IsPinningAllowed consente di verificare se l'aggiunta è consentita.
Quando l'utente fa clic sul pulsante aggiungi, è necessario controllare questa proprietà e, se è false, è necessario visualizzare una finestra di dialogo di messaggio che informa l'utente che l'aggiunta non è consentita nel computer.
TaskbarManager taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager == null)
{
// Display message dialog informing user that taskbar is no longer present, and then hide the button
}
else if (taskbarManager.IsPinningAllowed == false)
{
// Display message dialog informing user pinning is not allowed on this machine
}
else
{
// Continue pinning
}
5. Costruisci e aggiungi il riquadro
L'utente ha fatto clic sul pulsante di aggiunta ed è stato determinato che le API sono presenti, la barra delle applicazioni è presente e l'aggiunta è consentita... ora di pinnare!
Prima di tutto, costruisci il riquadro secondario esattamente come si farebbe quando si aggiunge a Start. Per altre informazioni sulle proprietà dei riquadri secondari, vedere Aggiungere riquadri secondari a Start. Tuttavia, quando si aggiunge alla barra delle applicazioni, oltre alle proprietà richieste in precedenza, è necessario anche Square44x44Logo (questo è il logo usato dalla barra delle applicazioni). In caso contrario, verrà generata un'eccezione .
Passa quindi il riquadro al metodo RequestPinSecondaryTileAsync. Poiché si tratta di un accesso limitato, non verrà visualizzata una finestra di dialogo di conferma e non richiede un thread dell'interfaccia utente. Ma in futuro, quando questo viene aperto oltre l'accesso limitato, i chiamanti che non usano accesso limitato riceveranno una finestra di dialogo e saranno necessari per usare il thread dell'interfaccia utente.
// Initialize the tile (all properties below are required)
SecondaryTile tile = new SecondaryTile("myTileId");
tile.DisplayName = "PowerPoint 2016 (Remote)";
tile.Arguments = "app=powerpoint";
tile.VisualElements.Square44x44Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square44x44Logo.png");
tile.VisualElements.Square150x150Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square150x150Logo.png");
// Pin it to the taskbar
bool isPinned = await taskbarManager.RequestPinSecondaryTileAsync(tile);
Questo metodo restituisce un valore booleano che indica se il riquadro è stato aggiunto alla barra delle applicazioni. Se il riquadro è già stato aggiunto, il metodo aggiorna il riquadro esistente e restituisce true
. Se l'aggiunta non è consentita o la barra delle applicazioni non è supportata, il metodo restituisce false
.
Enumerazione dei riquadri
Per visualizzare tutti i riquadri creati e ancora aggiunti da qualche parte (Start, barra delle applicazioni o entrambi), usa FindAllAsync. Successivamente, è possibile verificare se questi riquadri vengono aggiunti alla barra delle applicazioni e/o Avvia. Se la superficie non è supportata, questi metodi restituiscono false.
var taskbarManager = TaskbarManager.GetDefault();
var startScreenManager = StartScreenManager.GetDefault();
// Look through all tiles
foreach (SecondaryTile tile in await SecondaryTile.FindAllAsync())
{
if (taskbarManager != null && await taskbarManager.IsSecondaryTilePinnedAsync(tile.TileId))
{
// Tile is pinned to the taskbar
}
if (startScreenManager != null && await startScreenManager.ContainsSecondaryTileAsync(tile.TileId))
{
// Tile is pinned to Start
}
}
Aggiorna un riquadro
Per aggiornare un riquadro già aggiunto, puoi usare il metodo SecondaryTile.UpdateAsync come descritto in Aggiornamento di un riquadro secondario.
Rimuovi un riquadro
L'app deve fornire un pulsante di annullamento se il riquadro è attualmente aggiunto. Per rimuovere il riquadro, chiama semplicemente TryUnpinSecondaryTileAsync passando il TileId
riquadro secondario che vuoi rimuovere.
Questo metodo restituisce un valore booleano che indica se il riquadro non viene più aggiunto alla barra delle applicazioni. Se il riquadro non è stato aggiunto al primo posto, restituisce true
anche . Se l'annullamento dell'operazione non è consentita, restituisce false
.
Se il riquadro è stato aggiunto solo alla barra delle applicazioni, il riquadro verrà eliminato perché non viene più aggiunto da nessuna parte.
var taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager != null)
{
bool isUnpinned = await taskbarManager.TryUnpinSecondaryTileAsync("myTileId");
}
Eliminare un riquadro
Se si vuole rimuovere un riquadro da qualsiasi posizione (Start, barra delle applicazioni), usare il metodo RequestDeleteAsync.
Questo è appropriato per i casi in cui il contenuto aggiunto dall'utente non è più applicabile. Ad esempio, se l'app consente di aggiungere un notebook alla barra delle applicazioni e start e quindi l'utente elimina il notebook, è sufficiente eliminare il riquadro associato al notebook.
// Initialize a secondary tile with the same tile ID you want removed.
// Or, locate it with FindAllAsync()
SecondaryTile toBeDeleted = new SecondaryTile(tileId);
// And then delete the tile
await toBeDeleted.RequestDeleteAsync();
Rimozione solo da Start
Se vuoi rimuovere un riquadro secondario solo da Start lasciandolo sulla barra delle applicazioni, puoi chiamare il metodo StartScreenManager.TryRemoveSecondaryTileAsync. In questo modo il riquadro verrà eliminato in modo analogo se non è più aggiunto ad altre superfici.
Questo metodo restituisce un valore booleano che indica se il riquadro non viene più aggiunto a Start. Se il riquadro non è stato aggiunto al primo posto, restituisce true
anche . Se l'annullamento dell'operazione non è consentito o Start non è supportato, restituisce false
.
await StartScreenManager.GetDefault().TryRemoveSecondaryTileAsync("myTileId");