Share via


Riconfigurazione della barra multifunzione con modalità applicazione

Il framework della barra multifunzione di Windows supporta la riconfigurazione dinamica ed l'esposizione di elementi principali dell'interfaccia utente della barra multifunzione in fase di esecuzione, in base allo stato dell'applicazione (detto anche contesto). Dichiarati e associati a elementi specifici nel markup, i vari stati supportati da un'applicazione vengono definiti modalità applicazione.

Introduzione

Le modalità applicazione sono costituite da gruppi logici di controlli che espongono alcune funzionalità principali dell'applicazione nell'interfaccia utente della barra multifunzione. Queste modalità vengono abilitate o disabilitate dinamicamente dall'applicazione tramite una chiamata al metodo framework IUIFramework::SetModes, che attiva o disattiva la visibilità di una o più modalità applicazione.

Interfaccia utente contestuale

Il framework della barra multifunzione offre un'esperienza utente avanzata incorporando controlli dinamici che rispondono senza problemi all'interazione dell'utente e al contesto dell'applicazione. Questa interfaccia utente contestuale avanzata viene fornita tramite una combinazione dei meccanismi seguenti:

  • Raccolte: controlli basati su raccolte che supportano la manipolazione dinamica delle raccolte di elementi.
  • Schede contestuali: schede della barra multifunzione con visibilità determinata da una modifica nel contesto dell'area di lavoro, ad esempio la selezione di un'immagine in un documento.
  • Modalità applicazione: funzionalità principali dell'applicazione dipendenti dal contesto dell'applicazione.

In alcuni casi, le modalità applicazione appaiono in modo funzionale simile alle schede contestuali. Tuttavia, la distinzione fondamentale risiede nell'intento e nell'ambito di ognuno.

I controlli contestuali vengono attivati in risposta a una modifica del contesto all'interno di un'applicazione. Ad esempio, in Microsoft Paint per Windows 7, viene visualizzata una scheda contestuale contenente gruppi di comandi correlati al testo quando un utente inserisce un'area di testo nell'area di lavoro. Questa scheda contestuale non contiene comandi principali per l'applicazione ed è esposta solo nell'interfaccia utente perché il contesto all'interno dell'applicazione è stato modificato. La funzionalità principale dell'applicazione (i comandi di modifica delle immagini) è ancora rilevante e disponibile per l'utente, anche con la scheda contestuale visibile.

Le modalità applicazione differiscono dai controlli contestuali in quanto riconfigurano le funzionalità in risposta alle modifiche nel contesto in cui opera l'applicazione. Le modalità applicazione si trovano a un livello superiore di astrazione; forniscono un modo per riconfigurare la funzionalità di base di un'applicazione anziché esporre temporaneamente funzionalità che non sono componenti di base dell'interfaccia utente. Ad esempio, in Microsoft Paint per Windows 7, si verifica un'opzione in modalità applicazione quando viene richiamato il comando Anteprima di stampa. Quando Microsoft Paint passa all'anteprima di stampa, il contesto che l'applicazione sta operando nelle modifiche dalla modifica alla visualizzazione in anteprima. Di conseguenza, la funzionalità principale dell'applicazione cambia fino a quando l'anteprima di stampa non viene annullata e l'applicazione entra nuovamente nel contesto di modifica.

Uno scenario in modalità applicazione semplice

Lo scenario seguente illustra come vengono usate le modalità applicazione, in un'applicazione denominata RibbonApp, per esporre aspetti discreti delle funzionalità di base.

In RibbonApp sono definite due modalità applicazione:

  • La modalità semplice espone i comandi di base nell'interfaccia utente della barra multifunzione. Questi comandi vengono visualizzati sempre, indipendentemente dalla modalità applicazione attiva.
  • La modalità avanzata espone comandi complessi destinati agli utenti esperti dell'applicazione. Questi comandi avanzati vengono visualizzati nell'interfaccia utente della barra multifunzione, oltre ai semplici comandi.

Per impostazione predefinita, RibbonApp è impostato per l'apertura in modalità semplice e i comandi richiesti dagli utenti principianti vengono visualizzati nel menu applicazione e nella scheda Home . Le schermate seguenti mostrano il menu applicazione RibbonApp e la scheda Home in modalità semplice , evidenziando i controlli modali.

screenshot che mostra una scheda per la modalità applicazione semplice.screenshot che mostra il menu dell'applicazione per la modalità applicazione semplice.

Anche se questi comandi possono essere sufficienti per gli utenti principianti, RibbonApp supporta anche gli utenti esperti tramite una modalità avanzata che, quando attivata facendo clic sul pulsante Passa alla modalità avanzata nel menu applicazione, visualizza funzionalità di base aggiuntive.

Questo scenario viene facilmente implementato associando vari elementi nel markup a modalità di applicazione discrete che possono essere attivate e disattivate in base alle esigenze. Le schermate seguenti mostrano il menu applicazione RibbonApp e la scheda Home in modalità Avanzata , evidenziando i controlli modali.

screenshot che mostra una scheda per la modalità applicazione avanzata.screenshot che mostra il menu dell'applicazione per la modalità applicazione avanzata.

Implementazione delle modalità applicazione

In questa sezione vengono descritti i tre passaggi in genere necessari per l'implementazione delle modalità applicazione del framework della barra multifunzione. RibbonApp viene usato per fornire un esempio per ogni passaggio.

Identificare le modalità

Ogni modalità in un'applicazione deve rappresentare un set logico di funzionalità che dipende dal contesto in cui un'applicazione può operare. Ad esempio, se un'applicazione visualizza controlli rilevanti solo quando viene rilevata una connessione di rete, tali controlli operano all'interno di un contesto di rete che potrebbe giustificare la creazione di una modalità di rete .

RibbonApp include due contesti che possono essere attivi in qualsiasi momento: Simple e Advanced. Di conseguenza, RibbonApp richiede due modalità: Simple e Advanced.

Assegnare controlli alle modalità applicazione

Dopo aver identificato le modalità applicazione, assegnare ogni controllo della barra multifunzione a una modalità dichiarando un attributo ApplicationModes nel markup per gli elementi di controllo che supportano le modalità applicazione.

La visualizzazione barra multifunzione consente di specificare le modalità negli elementi di controllo seguenti:

Nel framework della barra multifunzione questi elementi di controllo vengono definiti controlli modali. Vengono visualizzati solo se una modalità a cui sono associati è attiva nell'interfaccia utente.

Gli elementi di controllo contenuti all'interno di un controllo modale ereditano il comportamento della modalità applicazione. Ad esempio, se un controllo modale Group viene assegnato a una modalità Avanzata e la modalità Avanzate non è attiva, il gruppo e tutti i controlli in esso contenuti, modali o altrimenti, non saranno visibili nell'interfaccia utente della barra multifunzione.

Con l'uso dell'attributo ApplicationModes , le modalità vengono assegnate ai controlli modali in una relazione 1:N (uno-a-molti), in cui un singolo controllo modale può essere associato a diverse modalità.

Il framework della barra multifunzione fa riferimento alle modalità numericamente, da 0 a 31, con la modalità 0 considerata la modalità predefinita attivata automaticamente all'avvio di un'applicazione della barra multifunzione. Qualsiasi controllo modale che non specifica un attributo ApplicationModes viene considerato membro della modalità predefinita.

In RibbonApp Simple è la modalità predefinita, con la funzionalità Modalità avanzata visualizzata solo quando viene avviata dall'utente.

Nell'esempio seguente viene illustrato il markup necessario per RibbonApp.

<Application.Views>
  <Ribbon>

    <!--Application Menu-->
    <Ribbon.ApplicationMenu>
      <ApplicationMenu CommandName='cmdAppMenu'>                    
        <MenuGroup>
          <Button CommandName='cmdSave'/>                        
          <Button CommandName='cmdExportMetadata' ApplicationModes='1'/>                   
        </MenuGroup>              
        <MenuGroup>
          <Button CommandName='cmdSwitchModes' ApplicationModes ='0,1'/>
          <Button CommandName='cmdExit'/>
        </MenuGroup>
      </ApplicationMenu>
    </Ribbon.ApplicationMenu>
            
    <!--Tabs-->
    <Ribbon.Tabs>
      <!--Home Tab-->
      <Tab CommandName='cmdHomeTab'>
                    
        <!--Scaling Policy for Home tab-->
        <Tab.ScalingPolicy>
          <ScalingPolicy>
            <ScalingPolicy.IdealSizes>
              <Scale Group='cmdSimpleControlsGroup' Size='Medium'/>                                
            </ScalingPolicy.IdealSizes>                     
          </ScalingPolicy>
        </Tab.ScalingPolicy>     
                    
        <!--Simple Controls Group-->
        <Group CommandName='cmdSimpleControlsGroup' SizeDefinition='ThreeButtons-OneBigAndTwoSmall'>                        
          <Button CommandName="cmdPaste" />
          <Button CommandName='cmdCut'/>                        
          <Button CommandName='cmdCopy'/>                        
        </Group>
      </Tab>
                
      <!--Advanced Tab-->
      <Tab CommandName='cmdAdvancedTab' ApplicationModes='1'>
        <!--Advanced Controls Group-->
        <Group CommandName='cmdMetadataGroup' ApplicationModes='1' SizeDefinition='TwoButtons'>
          <Button CommandName='cmdEditMetadata' />
          <Button CommandName='cmdCheckErrors' />
        </Group>
      </Tab>
    </Ribbon.Tabs>                   
                             
  </Ribbon>         
</Application.Views>

In questo esempio viene illustrato quanto segue:

  • La modalità predefinita 0 non deve essere dichiarata in modo esplicito. Poiché i controlli modali che non specificano l'attributo ApplicationModes vengono associati automaticamente alla modalità 0 (modalità semplice nell'esempio RibbonApp), non è necessario dichiarare in modo esplicito l'attributo per i controlli modali predefiniti.
  • I controlli possono essere associati a più modalità. Per RibbonApp, l'unica necessità per l'attributo ApplicationModes in un controllo modalità semplice è il cmdSwitchModes pulsante , poiché fa parte delle modalità Simple e Advanced . Se una delle due modalità è attiva, questo controllo verrà visualizzato nel menu applicazione.
  • I controlli modali non ereditano dai relativi elementi padre. La scheda Avanzate di RibbonApp contiene un gruppo di metadati ; entrambi questi controlli modali vengono assegnati alla modalità 1 (modalità avanzata ). L'assegnazione della scheda Avanzate alla modalità 1 non assegna automaticamente controlli figlio, ad esempio il gruppo Metadati , alla modalità 1. Ciò consente a qualsiasi gruppo all'interno di una scheda di essere abilitato o disabilitato in modo indipendente in fase di esecuzione.
  • I controlli non modali possono comunque basarsi su commutatori in modalità. I pulsanti Modifica metadati e Verifica errori di RibbonApp sono destinati agli utenti avanzati e sono disponibili solo quando l'utente passa alla modalità Avanzata . I controlli pulsante non ospitati all'interno del menu applicazione sono non modali; tuttavia, poiché questi pulsanti sono ospitati all'interno di un controllo modale (gruppo metadati ), sono visibili quando il gruppo è visibile. Di conseguenza, questi pulsanti vengono visualizzati quando viene attivata la modalità avanzata e il gruppo metadati viene esposto nell'interfaccia utente della barra multifunzione .

Cambia modalità in fase di esecuzione

Dopo che le modalità sono definite nel markup, possono essere facilmente abilitate o disabilitate in risposta agli eventi contestuali. Come accennato in precedenza, le applicazioni della barra multifunzione vengono sempre avviate nella modalità predefinita 0. Dopo che l'applicazione è stata inizializzata e la modalità 0 è attiva, il set di modalità attive può essere modificato chiamando la funzione IUIFramework::SetModes . Questa funzione accetta un intero a 32 bit come rappresentazione bit per bit delle modalità che devono essere attive; il bit meno significativo rappresenta la modalità 0 e il bit più significativo rappresenta la modalità 31. Se un bit è impostato su zero, la modalità non è attiva nell'interfaccia utente della barra multifunzione.

In RibbonApp, quando un utente abilita la modalità Avanzata , i comandi avanzati vengono visualizzati insieme ai semplici comandi. Il gestore dei comandi per il pulsante Passa alla modalità avanzata chiama IUIFramework::SetModes per impostare le modalità 0 (Semplice) e 1 (Avanzate) come attivo nell'interfaccia utente. L'esempio seguente è il codice RibbonApp per questa chiamata di funzione :

const int SIMPLE_MODE = 0;
const int ADVANCED_MODE = 1;
pFramework->SetModes( UI_MAKEAPPMODE(SIMPLE_MODE) | UI_MAKEAPPMODE(ADVANCED_MODE) );

Nota

Il framework della barra multifunzione UI_MAKEAPPMODE macro semplifica l'attività di impostazione corretta di questi bit in preparazione della chiamata a IUIFramework::SetModes.

 

In questo esempio viene illustrato quanto segue:

  • Utilizzare la macro UI_MAKEAPPMODE per creare un set di modalità.
  • Le modalità vengono impostate in modo esplicito e atomico. Il valore intero passato a IUIFramework::SetModes rappresenta le modalità che saranno attive dopo la restituzione della funzione. Anche se in precedenza la modalità Simple era attiva, IUIFramework::SetModes deve indicare che la modalità Semplice rimane attiva quando viene attivata la modalità Avanzata .
  • È possibile rimuovere la modalità predefinita. Anche se in RibbonApp la modalità predefinita (modalità 0) non viene mai rimossa, può essere rimossa con la chiamata seguente: g_pFramework->SetModes(UI_MAKEAPPMODE(ADVANCED_MODE)), esponendo solo i comandi avanzati nell'interfaccia utente.

Nota

Quando le modalità di un'applicazione vengono riconfigurate, la barra multifunzione tenterà di mantenere la scheda selezionata in precedenza nell'interfaccia utente. Se il nuovo set di modalità non contiene più la scheda selezionata prima della chiamata, la barra multifunzione selezionerà la scheda nel relativo layout più vicino al menu applicazione. Questa scheda deve contenere i comandi più rilevanti per l'utente. Per altre informazioni, vedere Linee guida per l'esperienza utente della barra multifunzione.

 

Commenti

La barra multifunzione deve avere sempre almeno una modalità attiva. Se un'applicazione tenta di disattivare tutte le modalità chiamando IUIFramework::SetModes con un valore di modalità 0, viene restituito E_FAIL e il set di modalità attiva rimane invariato.

Il framework richiede che nell'interfaccia utente della barra multifunzione esista almeno una scheda. Di conseguenza, deve essere presente almeno una scheda esposta dalla modalità predefinita (modalità 0) e dopo ogni opzione di modalità.

Non tutte le aree dell'interfaccia utente della barra multifunzione sono interessate dalle modalità applicazione. Ad esempio, se la disabilitazione di una modalità causa la scomparsa dei pulsanti dalla barra multifunzione aggiunti in precedenza alla barra di accesso rapido, tali pulsanti rimangono nella barra di accesso rapido, consentendo agli utenti di eseguire i comandi associati ai pulsanti. Come regola generale, se un comando appartiene a una o più modalità inattive, tale comando deve essere disabilitato impostando anche la proprietà UI_PKEY_Enabled su 0 (VARIANT_FALSE) .

Linee guida per l'esperienza utente della barra multifunzione

Visualizzazione di schede contestuali