Condividi tramite


Consiglio didattico

Un suggerimento didattico è un riquadro pop-up semipermanente ricco di contenuti che offre informazioni contestuali. Viene spesso usata per offrire agli utenti informazioni, suggerimenti e istruzioni su funzionalità nuove e importanti che possono contribuire a migliorare la loro esperienza.

Un suggerimento didattico può scomparire automaticamente quando si tocca lo schermo oppure può richiedere un'azione esplicita per la chiusura. Un suggerimento didattico può indirizzare un elemento specifico dell'interfaccia utente con la sua coda e può anche essere usato senza coda o riferimento a un elemento specifico.

È il controllo giusto?

Un controllo TeachingTip è utile per attirare l'attenzione dell'utente su funzionalità e aggiornamenti nuovi e importanti, suggerirgli opzioni non essenziali che potrebbero migliorare la sua esperienza o fornirgli indicazioni su come completare un'attività.

Poiché un suggerimento didattico è temporaneo, non sarebbe il controllo raccomandato per segnalare agli utenti errori o importanti cambiamenti di stato.

Consigli

  • I suggerimenti sono impermanenti e non devono contenere informazioni o opzioni che sono critiche per l'esperienza di un'applicazione.
  • Cerca di evitare di mostrare consigli didattici con eccessiva frequenza. I suggerimenti per l'insegnamento hanno maggiori probabilità di ricevere attenzione individuale quando sono distribuiti in sessioni lunghe o attraverso più sessioni.
  • Mantieni i consigli concisi e il loro argomento chiaro. Dalle ricerche risulta che gli utenti leggono in media solo 3-5 parole e ne comprendono solo 2-3 prima di decidere se interagire con una descrizione informativa.
  • Non è garantita l'accessibilità ai suggerimenti didattici tramite gamepad. Per le applicazioni che prevedono l'input tramite game pad, vedi la sezione sulle interazioni tramite game pad e controllo remoto. È consigliabile testare l'accessibilità tramite game pad di ogni descrizione informativa usando tutte le possibili configurazioni dell'interfaccia utente di un'app.
  • Quando si abilita un suggerimento a uscire dai confini della radice XAML, è consigliabile abilitare anche la proprietà IsLightDismissEnabled e impostare la modalità PreferredPlacement in modo che sia il più vicino possibile al centro della radice XAML.

Riconfigurazione di un suggerimento didattico aperto

Alcuni contenuti e proprietà possono essere riconfigurati mentre il suggerimento didattico è aperto e avranno effetto immediato. Per la riconfigurazione di altri contenuti e proprietà, come la proprietà dell'icona, i pulsanti di Azione e Chiudi, e l'impostazione tra chiusura automatica e chiusura esplicita, sarà necessario chiudere e riaprire il tip informativo per rendere effettive le modifiche a queste proprietà. Tieni presente che, se cambi il comportamento di chiusura del suggerimento passando dalla modalità manuale a quella con interazione leggera, il pulsante di chiusura viene rimosso prima che la nuova modalità sia abilitata, causando il blocco del suggerimento sullo schermo.

Esempi

Un consiglio didattico può avere diverse configurazioni, tra cui queste notevoli:

Un suggerimento didattico può puntare con la sua coda a un elemento specifico dell'interfaccia utente per migliorare la chiarezza contestuale delle informazioni che presenta.

Un'app di esempio con un suggerimento didattico rivolto al pulsante salva. Il titolo del suggerimento dice

Quando le informazioni presentate non riguardano un particolare elemento dell'interfaccia utente, è possibile creare un suggerimento di insegnamento non mirato rimuovendo la coda.

Un'app di esempio con un suggerimento didattico nell'angolo in basso a destra. Il titolo del suggerimento è

Per chiudere un consiglio didattico, l'utente può dover fare clic su un pulsante "X" in un angolo superiore oppure su un pulsante "Chiudi" in basso. Una descrizione informativa può anche essere configurata per scomparire automaticamente, nel qual caso non c’è un pulsante di chiusura e il suggerimento didattico scompare quando l’utente scorre o interagisce con altri elementi dell’applicazione. Considerato questo comportamento, le descrizioni informative di questo tipo offrono la soluzione ideale quando è necessario posizionare una descrizione in un'area scorrevole.

Un'app di esempio con un suggerimento a scomparsa nell'angolo in basso a destra. Il titolo del suggerimento è

Creare un suggerimento didattico

L'app Raccolta WinUI 3 include esempi interattivi della maggior parte dei controlli e delle funzionalità di WinUI 3. Scaricare l'app da Microsoft Store od ottenere il codice sorgente su GitHub

Di seguito è riportato il codice XAML per un controllo TeachingTip mirato che mostra l'aspetto predefinito del TeachingTip con un titolo e un sottotitolo. Tieni presente che il consiglio didattico può trovarsi in qualsiasi punto della struttura ad albero degli elementi o del code-behind. Nell'esempio qui sotto, si trova in un ResourceDictionary.

<Button x:Name="SaveButton" Content="Save">
    <Button.Resources>
        <TeachingTip x:Name="AutoSaveTip"
            Target="{x:Bind SaveButton}"
            Title="Save automatically"
            Subtitle="When you save your file to OneDrive, we save your changes as you go - so you never have to.">
        </TeachingTip>
    </Button.Resources>
</Button>
public MainPage()
{
    this.InitializeComponent();

    if(!HaveExplainedAutoSave())
    {
        AutoSaveTip.IsOpen = true;
        SetHaveExplainedAutoSave();
    }
}

Ecco come viene visualizzata la pagina contenente il pulsante e la descrizione informativa:

Un'app di esempio con un consiglio didattico destinato al pulsante salva. Il titolo del suggerimento recita

Nell'esempio precedente, le proprietà Titolo e Sottotitolo vengono usate per impostare il titolo e il sottotitolo del suggerimento per l'insegnamento. La proprietà Destinazione è impostata su "SaveButton" per stabilire la connessione visiva con il pulsante. Per visualizzare il suggerimento didattico, la relativa proprietà IsOpen è impostata su true.

Suggerimenti non mirati

Non tutte le descrizioni informative sono correlate a un elemento sullo schermo. Per questi scenari, non impostare un target e la descrizione informativa verrà visualizzata rispetto ai bordi della radice XAML. È tuttavia possibile rimuovere la freccia e mantenere la posizione della descrizione informativa rispetto a un elemento dell'interfaccia utente impostando la proprietà TailVisibility su "Collapsed". L'esempio seguente è di un consiglio didattico non mirato.

<Button x:Name="SaveButton" Content="Save" />

<TeachingTip x:Name="AutoSaveTip"
    Title="Saving automatically"
    Subtitle="We save your changes as you go - so you never have to.">
</TeachingTip>

Si noti che in questo esempio il TeachingTip si trova nella struttura ad albero degli elementi piuttosto che in un ResourceDictionary o nel "code-behind". Ciò non ha alcun effetto sul comportamento. Il controllo TeachingTip viene visualizzato solo quando è aperto e non occupa spazio nel layout.

Un'app di esempio con un suggerimento informativo nell'angolo in basso a destra. Il titolo del suggerimento recita

Posizionamento preferito

Il suggerimento didattico replica il comportamento di posizionamento FlyoutPlacementMode del Flyout con la proprietà PreferredPlacement. La modalità di posizionamento predefinita tenterà di posizionare un suggerimento didattico mirato sopra l'obiettivo e un suggerimento didattico non mirato centrato nella parte inferiore della radice XAML. Come con il controllo Flyout, se la modalità di posizionamento preferita non consente la visualizzazione del suggerimento didattico, verrà automaticamente scelta un'altra modalità di posizionamento.

Per le applicazioni che prevedono l'input tramite game pad, vedi la sezione sulle interazioni tramite game pad e controllo remoto. È consigliabile testare l'accessibilità tramite game pad di ogni descrizione informativa usando tutte le possibili configurazioni dell'interfaccia utente di un'app.

Un suggerimento didattico mirato con la proprietà PreferredPlacement impostata su "BottomLeft" comparirà con la freccia centrata nella parte inferiore del suo obiettivo e il corpo del suggerimento spostato verso sinistra.

<Button x:Name="SaveButton" Content="Save">
    <Button.Resources>
        <TeachingTip x:Name="AutoSaveTip"
            Target="{x:Bind SaveButton}"
            Title="Saving automatically"
            Subtitle="We save your changes as you go - so you never have to."
            PreferredPlacement="BottomLeft">
        </TeachingTip>
    </Button.Resources>
</Button>

Un'app di esempio con un pulsante

Un suggerimento didattico non mirato con la proprietà PreferredPlacement impostata su "BottomLeft" verrà visualizzato nell'angolo in basso a sinistra della radice XAML.

<Button x:Name="SaveButton" Content="Save" />

<TeachingTip x:Name="AutoSaveTip"
    Title="Saving automatically"
    Subtitle="We save your changes as you go - so you never have to."
    PreferredPlacement="BottomLeft">
</TeachingTip>

Un'app di esempio con un suggerimento didattico nell'angolo in basso a sinistra. Il titolo del suggerimento dice

Il diagramma seguente illustra il risultato di tutte e 13 le modalità di Posizionamento Preferito che possono essere impostate per i suggerimenti didattici mirati. Illustrazione contenente 13 consigli didattici, ognuno illustrando una modalità di posizionamento mirata diversa. Ogni consiglio didattico viene etichettato con la modalità rappresentata. La prima parola di una modalità di posizionamento indica il lato della destinazione in cui verrà visualizzata la nota esplicativa allineata al centro. La coda della nota esplicativa si troverà sempre al centro di quel lato della destinazione e punterà verso la destinazione. Se, nella modalità di posizionamento, è presente una seconda parola, il corpo della nota esplicativa non verrà centrato, ma verrà spostato nella direzione specificata. Ad esempio, la modalità di posizionamento

Il diagramma seguente illustra il risultato di tutte le 13 modalità di PreferredPlacement che possono essere impostate per i suggerimenti didattici non mirati. Illustrazione contenente nove suggerimenti per l'insegnamento, ognuno che dimostra una diversa modalità di posizionamento non mirata. Ogni suggerimento didattico viene etichettato con la modalità rappresentata. La prima parola di una modalità di posizionamento indica il lato della radice xaml su cui verrà visualizzata la descrizione informativa al centro. Se, nella modalità di posizionamento, è presente una seconda parola, la descrizione informativa si posiziona verso l'angolo specificato della radice xaml. Ad esempio, la modalità di posizionamento

Aggiungere un margine di posizionamento

Usando la proprietà PlacementMargin, è possibile controllare la distanza di un suggerimento didattico mirato dalla sua destinazione e la distanza di un suggerimento didattico non mirato dai bordi della radice XAML. Come la proprietà Margin, PlacementMargin ha quattro valori (Left, Right, Top e Bottom) e pertanto vengono usati solo i valori pertinenti. Ad esempio, PlacementMargin.Left si applica quando il suggerimento si trova a sinistra della destinazione o sul bordo sinistro della radice di XAML.

L'esempio seguente mostra un suggerimento non mirato con Left/Top/Right/Bottom di PlacementMargin tutti impostati a 80.

<Button x:Name="SaveButton" Content="Save" />

<TeachingTip x:Name="AutoSaveTip"
    Title="Saving automatically"
    Subtitle="We save your changes as you go - so you never have to."
    PreferredPlacement="BottomLeft"
    PlacementMargin="80">
</TeachingTip>

Un'app di esempio con un suggerimento posizionato verso, ma non completamente contro, l'angolo in basso a destra. Il titolo del suggerimento è

Aggiungere contenuto

Usando la proprietà Content, è possibile aggiungere contenuto a una descrizione informativa. Se è presente più contenuto da visualizzare rispetto alle dimensioni della descrizione informativa, verrà abilitata automaticamente una barra di scorrimento per consentire a un utente di scorrere l'area di contenuto.

<Button x:Name="SaveButton" Content="Save">
    <Button.Resources>
        <TeachingTip x:Name="AutoSaveTip"
            Target="{x:Bind SaveButton}"
            Title="Saving automatically"
            Subtitle="We save your changes as you go - so you never have to.">
                <StackPanel>
                    <CheckBox x:Name="HideTipsCheckBox" Content="Don't show tips at start up" IsChecked="{x:Bind HidingTips, Mode=TwoWay}" />
                    <TextBlock>You can change your tip preferences in <Hyperlink NavigateUri="app:/item/SettingsPage">Settings</Hyperlink> if you change your mind.</TextBlock>
                </StackPanel>
        </TeachingTip>
    </Button.Resources>
</Button>

Un'app di esempio con una descrizione informativa destinata al pulsante salva. Il titolo del suggerimento legge

Aggiungi pulsanti

Per impostazione predefinita, accanto al titolo di una descrizione informativa è visualizzato un pulsante "X" standard per la chiusura. È possibile personalizzare il pulsante di chiusura con la proprietà CloseButtonContent, che consente di spostarlo nella parte inferiore della descrizione informativa.

Nota: Il pulsante di chiusura non apparirà nei suggerimenti abilitati alla rimozione automatica

È possibile inoltre aggiungere un pulsante di azione personalizzato impostando la proprietà ActionButtonContent e, facoltativamente, le proprietà ActionButtonCommand e ActionButtonCommandParameter.

<Button x:Name="SaveButton" Content="Save">
    <Button.Resources>
        <TeachingTip x:Name="AutoSaveTip"
            Target="{x:Bind SaveButton}"
            Title="Saving automatically"
            Subtitle="We save your changes as you go - so you never have to."
            ActionButtonContent="Disable"
            ActionButtonCommand="{x:Bind DisableAutoSaveCommand}"
            CloseButtonContent="Got it!">
                <StackPanel>
                    <CheckBox x:Name="HideTipsCheckBox" Content="Don't show tips at start up" IsChecked="{x:Bind HidingTips, Mode=TwoWay}" />
                    <TextBlock>You can change your tip preferences in <Hyperlink NavigateUri="app:/item/SettingsPage">Settings</Hyperlink> if you change your mind.</TextBlock>
                </StackPanel>
        </TeachingTip>
    </Button.Resources>
</Button>

Un'app di esempio con un suggerimento per il pulsante Salva. Il titolo del suggerimento recita

Contenuto Hero

È possibile aggiungere contenuto da bordo a bordo a un suggerimento didattico impostando la proprietà HeroContent. La posizione del contenuto Hero può essere impostata nella parte superiore o in quella inferiore della descrizione informativa tramite la proprietà HeroContentPlacement.

<Button x:Name="SaveButton" Content="Save">
    <Button.Resources>
        <TeachingTip x:Name="AutoSaveTip"
            Target="{x:Bind SaveButton}"
            Title="Saving automatically"
            Subtitle="We save your changes as you go - so you never have to.">
            <TeachingTip.HeroContent>
                <Image Source="Assets/cloud.png" />
            </TeachingTip.HeroContent>
        </TeachingTip>
    </Button.Resources>
</Button>

Un'app di esempio con un suggerimento didattico destinato al pulsante salva. Il titolo del suggerimento visualizza

Aggiungere un'icona

È possibile aggiungere un'icona accanto al titolo e al sottotitolo usando la proprietà IconSource. Per le icone sono consigliate dimensioni di 16, 24 e 32 pixel.

<Button x:Name="SaveButton" Content="Save">
    <Button.Resources>
        <TeachingTip x:Name="AutoSaveTip"
            Target="{x:Bind SaveButton}"
            Title="Saving automatically"
            Subtitle="We save your changes as you go - so you never have to."
            <TeachingTip.IconSource>
                <SymbolIconSource Symbol="Save" />
            </TeachingTip.IconSource>
        </TeachingTip>
    </Button.Resources>
</Button>

Un'app di esempio con un suggerimento didattico destinato al pulsante salva. Il titolo del suggerimento recita

Abilitare la funzionalità light dismiss

La funzionalità di light-dismiss è disabilitata per impostazione predefinita, ma può essere abilitata impostando la proprietà IsLightDismissEnabled in modo che un suggerimento interattivo scompaia, ad esempio, quando un utente scorre o interagisce con altri elementi dell'applicazione. A causa di questo comportamento, i suggerimenti ad annullamento automatico sono la soluzione migliore quando bisogna posizionare un suggerimento in un'area scorrevole.

Il pulsante di chiusura verrà rimosso automaticamente da un suggerimento didattico con rimozione leggera abilitata per identificare agli utenti il suo comportamento di chiusura automatica.

<Button x:Name="SaveButton" Content="Save" />

<TeachingTip x:Name="AutoSaveTip"
    Title="Saving automatically"
    Subtitle="We save your changes as you go - so you never have to."
    IsLightDismissEnabled="True">
</TeachingTip>

Un'app di esempio con un suggerimento di chiusura automatica nell'angolo in basso a destra. Il titolo del suggerimento recita

Superare i limiti della radice XAML

A partire da Windows 10, versione 1903 (build 18362), un suggerimento didattico può andare oltre i limiti della radice XAML e lo schermo impostando la proprietà ShouldConstrainToRootBounds. Quando questa proprietà è abilitata, un suggerimento didattico non tenterà di rimanere entro i limiti della radice di XAML o dello schermo e si posizionerà sempre secondo la modalità PreferredPlacement stabilita. Per garantire un'esperienza ottimale per gli utenti, è consigliabile abilitare la proprietà IsLightDismissEnabled e impostare la modalità PreferredPlacement il più vicino possibile al centro della radice XAML.

Nelle versioni precedenti di Windows questa proprietà viene ignorata e la descrizione informativa rimane sempre entro i limiti della radice XAML.

<Button x:Name="SaveButton" Content="Save" />

<TeachingTip x:Name="AutoSaveTip"
    Title="Saving automatically"
    Subtitle="We save your changes as you go - so you never have to."
    PreferredPlacement="BottomRight"
    PlacementMargin="-80,-50,0,0"
    ShouldConstrainToRootBounds="False">
</TeachingTip>

Un'app di esempio con un suggerimento didattico fuori dall'angolo in basso a destra dell'app. Il titolo del suggerimento recita

Annullamento e rinvio della chiusura

È possibile usare l'evento Closing per annullare e/o rinviare la chiusura di un suggerimento didattico. Questo può essere utilizzato per mantenere aperto il suggerimento didattico o consentire il tempo affinché un'azione o un'animazione personalizzata possa verificarsi. Quando la chiusura di un suggerimento didattico viene annullata, IsOpen viene reimpostata su true, ma rimane false durante la fase di rinvio. Anche una chiusura programmatica può essere annullata.

Nota

Se nessuna opzione di posizionamento consente la visualizzazione completa di un "teaching tip", questo itererà il suo ciclo di vita dell'evento per forzare una chiusura piuttosto che essere visualizzato senza un pulsante di chiusura accessibile. Se l'app annulla l'evento di chiusura, il suggerimento didattico potrebbe restare aperto senza un pulsante di chiusura accessibile.

<TeachingTip x:Name="EnableNewSettingsTip"
    Title="New ways to protect your privacy!"
    Subtitle="Please close this tip and review our updated privacy policy and privacy settings."
    Closing="OnTipClosing">
</TeachingTip>
private void OnTipClosing(muxc.TeachingTip sender, muxc.TeachingTipClosingEventArgs args)
{
    if (args.Reason == muxc.TeachingTipCloseReason.CloseButton)
    {
        using(args.GetDeferral())
        {
            bool success = UpdateUserSettings(User thisUsersID);
            if(!success)
            {
                // We were not able to update the settings!
                // Don't close the tip and display the reason why.
                args.Cancel = true;
                ShowLastErrorMessage();
            }
        }
    }
}

UWP e WinUI 2

Importante

Le informazioni e gli esempi in questo articolo sono ottimizzati per le app che usano Windows App SDK e WinUI 3, ma sono generalmente applicabili alle app UWP che usano WinUI 2. Per informazioni ed esempi specifici della piattaforma, consultare le indicazioni di riferimento sulle API UWP.

Questa sezione contiene informazioni necessarie per usare il controllo in un'app UWP o WinUI 2.

TeachingTip per le app UWP richiede WinUI 2. Per maggiori informazioni, incluse le istruzioni per l'installazione, vedere WinUI. Le API per questo controllo esistono nello spazio dei nomi Microsoft.UI.Xaml.Controls.

Per usare il codice in questo articolo con WinUI 2, usare un alias in XAML (si usa muxc) per rappresentare le API della libreria dell'interfaccia utente di Windows incluse nel progetto. Per altre informazioni, vedere Attività iniziali di WinUI 2.

xmlns:muxc="using:Microsoft.UI.Xaml.Controls"

<muxc:TeachingTip />