Visualizzazione di schede contestuali
In un'applicazione framework della barra multifunzione di Windows, una scheda contestuale è un controllo Struttura a schede nascosto visualizzato nella riga di tabulazione quando un oggetto nell'area di lavoro dell'applicazione, ad esempio un'immagine, è selezionato o evidenziato.
Introduzione
A differenza delle schede principali, che contengono vari comandi comuni rilevanti indipendentemente dal contesto dell'area di lavoro, le schede contestuali in genere contengono uno o più comandi applicabili solo a un oggetto selezionato o evidenziato.
Quando un oggetto è selezionato o evidenziato nell'area di lavoro dell'applicazione, il tipo e il contesto dell'oggetto potrebbero richiedere comandi diversi che non rendono senso aziendale o funzionale in una scheda contestuale. In questi casi, possono essere necessarie più schede contestuali, contenute in un gruppo di schede. Ad esempio, la selezione di un'immagine contenuta in una cella di tabella potrebbe richiedere due schede contestuali che espongono la funzionalità tabella e immagine.
Nota
Oltre a più schede contestuali, il framework della barra multifunzione supporta anche più controlli Gruppo di schede all'interno di una barra multifunzione.
Quando si visualizzano le schede contestuali, il framework della barra multifunzione applica un set di comportamenti di base che includono:
- Le schede contestuali vengono posizionate nell'ordine in cui vengono dichiarate e a destra delle schede principali nella riga della scheda della barra multifunzione.
- Quando la barra multifunzione viene ridimensionata, le schede vengono ridimensionate e le etichette di tabulazioni vengono troncate in base alle necessità di spazio. Tuttavia, alle schede contestuali visibili viene assegnata una priorità di visualizzazione superiore in cui vengono ridimensionate e troncate per ultimo.
- L'etichetta per un gruppo di schede viene visualizzata nella barra del titolo dell'applicazione e si estende su tutte le schede contestuali associate.
- Quando più controlli Gruppo di schede vengono visualizzati contemporaneamente, uno dei cinque colori univoci viene assegnato allo sfondo di ogni gruppo di schede nella barra del titolo dell'applicazione. Questo colore viene usato anche come colore di evidenziazione per le schede contestuali nel gruppo di schede.
- L'assegnazione di colore Gruppo tabulazioni è basata sull'ordine in cui gli elementi Gruppo tabulazioni vengono dichiarati nel markup. I colori sono definiti dal framework e non possono essere specificati dall'applicazione.
- I colori del gruppo di schede definiti dal framework possono essere modificati indirettamente tramite le chiavi delle proprietà Proprietà framework . Per altre informazioni, vedere Personalizzazione dei colori della barra multifunzione.
- Quando più di cinque controlli Gruppo di schede vengono visualizzati in qualsiasi momento, il framework esegue il ciclo dei colori associati.
- Il numero massimo di controlli Tab in una barra multifunzione è limitato a 100. Sono incluse le schede contestuali, visibili o meno.
La schermata seguente mostra una scheda contestuale di Windows 7 Paint.
Implementazione di schede contestuali
Questa sezione illustra i dettagli di implementazione delle schede contestuali della barra multifunzione e illustra come incorporarli in un'applicazione della barra multifunzione.
markup
Gli esempi seguenti illustrano il markup di base per un elemento TabGroup che contiene due schede contestuali.
Questa sezione di codice mostra le dichiarazioni tabgroup e tabulazioni dei comandi.
<!-- Contextual Tabs -->
<Command Name='cmdContextualTab1'
LabelTitle='Contextual Tab 1'
Symbol='ID_CONTEXTUALTAB1'/>
<Command Name='cmdContextualTab2'
LabelTitle='Contextual Tab 2'
Symbol='ID_CONTEXTUALTAB2'/>
<Command Name='cmdContextualTabGroup'
LabelTitle='Contextual Tabs'
Symbol='ID_CONTEXTUALTAB_GROUP'/>
Questa sezione del codice mostra le dichiarazioni di controllo necessarie per visualizzare due schede contestuali all'interno di un tabgroup.
<Ribbon.ContextualTabs>
<TabGroup CommandName='cmdContextualTabGroup'>
<Tab CommandName='cmdContextualTab1'>
<!--InRibbonGallery Group-->
<Group CommandName='cmdInRibbonGalleryGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdTextSizeGallery3'
HasLargeItems='true'
ItemHeight='32'
ItemWidth='32'
MaxColumns='3' >
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
<!--Command Galleries Group-->
<Group CommandName='cmdCommandGalleriesGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdCommandGallery1'
Type='Commands'
MaxRows='3'
MaxColumns='3'>
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
</Tab>
<Tab CommandName='cmdContextualTab2'></Tab>
</TabGroup>
</Ribbon.ContextualTabs>
Codice
UI_PKEY_ContextAvailable è la singola chiave di proprietà definita dal framework per specificare la visibilità e lo stato delle schede contestuali. Quando un oggetto viene selezionato nell'area di lavoro dell'applicazione, questa proprietà può essere assegnata a uno dei tre valori dell'enumerazione UI_CONTEXTAVAILABILITY che definiscono se esiste una scheda contestuale e, in caso affermativo, se viene visualizzata come scheda attiva.
Un'applicazione richiede un aggiornamento del gruppo di schede invalidando e aggiornando la proprietà UI_PKEY_ContextAvailable quando cambia il contesto dell'area di lavoro.
Le sezioni seguenti del codice illustrano come visualizzare una scheda contestuale quando un'immagine è selezionata in un'area di lavoro dell'applicazione.
// Initialize the image tools contextual tab visibility setting.
UI_CONTEXTAVAILABILITY g_ImageTools = UI_CONTEXTAVAILABILITY_NOTAVAILABLE;
// Called when an image is selected in the application.
void SelectImage()
{
...
g_ImageTools = UI_CONTEXTAVAILABILITY_ACTIVE;
// Invalidate the UI_PKEY_ContextAvailable property of the image tools
// contextual tab Command and trigger the UpdatePropery callback function.
pUIFramework->InvalidateUICommand(
cmdImageTabSet,
UI_INVALIDATIONS_PROPERTY,
UI_PKEY_ContextAvailable);
...
}
// Update Tab Group properties.
HRESULT MyTabGroupCommandHandler::UpdateProperty(
UINT nCmdID,
REFPROPERTYKEY key,
const PROPVARIANT* ppropvarCurrentValue,
PROPVARIANT* ppropvarNewValue)
{
HRESULT hr = E_FAIL;
if (key == UI_PKEY_ContextAvailable)
{
hr = UIInitPropertyFromUInt32(key, g_ImageTools, ppropvarNewValue);
}
...
return hr;
}
Argomenti correlati