selezione colori Drop-Down

Il framework della barra multifunzione di Windows offre un controllo selezione colori specializzato Drop-Down che espone un'ampia gamma di impostazioni dei colori tramite un pulsante di divisione e un selettore di colori personalizzabile.

Introduzione

Simulando l'aspetto e la funzionalità della selezione colori di Microsoft Office, il framework della barra multifunzione è in grado di trarre vantaggio da e contribuire a, coerenza e familiarità in un'ampia gamma di applicazioni.

markup

Come tutti i controlli della barra multifunzione, la selezione colori Drop-Down è facilmente implementata e personalizzata tramite markup. Il framework fornisce un numero di attributi di elemento per il Drop-Down Selezione colori per esporre vari livelli di funzionalità. Nella tabella seguente sono elencati gli attributi Drop-Down Selezione colori.

Attributo Descrizione
ColorTemplate Modelli di layout che specificano il tipo di selezione colori Drop-Down.
Sono disponibili tre modelli, ognuno dei quali specifica un layout di controllo e i valori predefiniti per gli attributi e le chiavi delle proprietà associati.
  • ThemeColors
  • StandardColors
  • HighlightColors
ChipSize Dimensioni di ogni chip di colore (o campione).
  • Small
  • Medium
  • Large
Colonne Numero di colonne del chip di colore (o di controllo).
CommandName Nome della dichiarazione di comando associata.
IsAutomaticColorButtonVisible Visualizza (o nasconde) il pulsante Automatico .
Valido solo quando ColorTemplate ha un valore di ThemeColors o StandardColors.
IsNoColorButtonVisible Visualizza (o nasconde) il pulsante Nessun colore .
Valido per tutti i valori ColorTemplate .
RecentColorGridRows Numero di righe di chip di colore (o di controllo) nell'area Colori recenti .
Valido solo quando ColorTemplate ha un valore di ThemeColors.
StandardColorGridRows Numero di righe di chip di colore (o di controllo) nell'area colori Standard .
ThemeColorGridRows Numero di righe di chip di colore (o di controllo) nell'area Colori tema .
Valido solo quando ColorTemplate ha un valore di ThemeColors.

Le schermate seguenti illustrano i layout predefiniti Drop-Down selezione colori per i tre modelli di colore.

     
ThemeColorsSchermata :[newline] dell'elemento dropdowncolorpicker con l'attributo colortemplate impostato su 'themecolors'.[newline] standardcolors:[newline] screenshot dell'elemento dropdowncolorpicker con l'attributo colortemplate impostato su 'standardcolors'.[newline] highlightcolorsSchermata :[newline] dell'elemento dropdowncolorpicker con l'attributo colortemplate impostato su 'highlightcolors'.

Il markup di base necessario per ogni tipo di selezione colori di Drop-Down è illustrato negli esempi seguenti:

Nota

Il Drop-Down Selezione colori è un controllo Button valido in un modello SizeDefinition .

<!-- DropDownColorPickers -->
<Command Name="cmdDropDownColorPickerGroup"
         Symbol="cmdDropDownColorPickerGroup"
         Comment="DropDownColorPicker Group"
         Id="55000"/>
<Command Name="cmdDropDownColorPickerThemeColors"
         Symbol="cmdDropDownColorPickerThemeColors"
         Comment="DropDownColorPicker ThemeColors"
         Id="55010"
         LabelTitle="ThemeColors"
         LabelDescription="ThemeColors\ndescription."/>
<Command Name="cmdDropDownColorPickerStandardColors"
         Symbol="cmdDropDownColorPickerStandardColors"
         Comment="DropDownColorPicker StandardColors"
         Id="55011"
         LabelTitle="StandardColors"/>
<Command Name="cmdDropDownColorPickerHighlightColors"
         Symbol="cmdDropDownColorPickerHighlightColors"
         Comment="DropDownColorPicker HighlightColors"
         Id="55012"
         LabelTitle="HighlightColors"/>

<Group CommandName=&quot;cmdDropDownColorPickerGroup&quot;
       SizeDefinition=&quot;ThreeButtons&quot;>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerThemeColors&quot;
    ColorTemplate=&quot;ThemeColors&quot;/>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerStandardColors&quot;
    ColorTemplate=&quot;StandardColors&quot;/>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerHighlightColors&quot;
    ColorTemplate=&quot;HighlightColors&quot;
    StandardColorGridRows=&quot;1&quot;/>
</Group>

Codice

Come controllo specializzato che supporta la personalizzazione, qualsiasi implementazione del Drop-Down Selezione colori che sfrutta queste funzionalità richiede codice applicazione specializzato per gestire le proprietà e gestire i comandi rilasciati dal controllo.

Proprietà

Il framework della barra multifunzione definisce una raccolta di chiavi di proprietà per il controllo Selezione colori Drop-Down.

In genere, una proprietà selezione colori Drop-Down viene aggiornata nell'interfaccia utente della barra multifunzione invalidando il comando associato al controllo tramite una chiamata al metodo IUIFramework::InvalidateUICommand . L'evento di invalidazione viene gestito e gli aggiornamenti delle proprietà definiti dal metodo di callback IUICommandHandler::UpdateProperty .

Il metodo di callback IUICommandHandler::UpdateProperty non viene eseguito e l'applicazione esegue una query per un valore di proprietà aggiornato, fino a quando la proprietà non è richiesta dal framework. Ad esempio, quando viene attivata una scheda e un controllo visualizzato nell'interfaccia utente della barra multifunzione o quando viene visualizzata una descrizione comando.

Nota

In alcuni casi, una proprietà può essere recuperata tramite il metodo IUIFramework::GetUICommandProperty e impostato con il metodo IUIFramework::SetUICommandProperty.

Nella tabella seguente sono elencate le chiavi delle proprietà associate al controllo Selezione colori Drop-Down.

Chiave della proprietà Descrizione Note
UI_PKEY_AutomaticColorLabel Definisce l'etichetta per il pulsante Colore automatico .
Valido solo quando ColorTemplate ha un valore di ThemeColors o StandardColors.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_Color Definisce il valore di colore selezionato come COLORREF.
Valido solo quando UI_PKEY_ColorType ha un valore di UI_SWATCHCOLORTYPE_RGB.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_ColorType Definisce il tipo di colore selezionato.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_Enabled Definisce la capacità di un controllo di rispondere all'interazione utente.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_Keytip Può essere aggiornato solo tramite l'invalidazione.
UI_PKEY_Label Definisce la stringa di caratteri per un'etichetta di controllo.
Può essere aggiornato solo tramite l'invalidazione.
UI_PKEY_LargeHighContrastImage Definisce l'immagine a contrasto elevato di grandi dimensioni da visualizzare per un controllo.
Può essere aggiornato solo tramite l'invalidazione.
Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione.
UI_PKEY_LargeImage Definisce l'immagine di grandi dimensioni da visualizzare per un controllo.
Può essere aggiornato solo tramite l'invalidazione.
Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione.
UI_PKEY_MoreColorsLabel Definisce l'etichetta per il pulsante Altri colori...
Valido solo quando ColorTemplate ha un valore di ThemeColors o StandardColors.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_NoColorLabel Definisce l'etichetta per il pulsante Nessun colore .
Valido per tutti i valori ColorTemplate .
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_RecentColorsCategoryLabel Definisce l'etichetta per la categoria Colori recenti .
Valido solo quando ColorTemplate ha un valore di ThemeColors. Si tratta dell'unico modello che contiene categorie etichettate.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_SmallHighContrastImage Definisce la piccola immagine a contrasto elevato da visualizzare per un controllo.
Può essere aggiornato solo tramite invalidazione.
Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione.
UI_PKEY_SmallImage Definisce la piccola immagine da visualizzare per un controllo.
Può essere aggiornato solo tramite invalidazione.
Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione.
UI_PKEY_StandardColors Definisce una matrice di valori COLORREF per i campioni di un Drop-Down Selezione colori.
Ogni Drop-Down Color Picker ColorTemplate contiene una StandardColors griglia.
Nota: Vengono visualizzati i valori COLORREF dell'oggetto StandardColorGridRows x Columns della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di StandardColors campioni dichiarati nel markup, vengono visualizzati spazi vuoti per i chip mancanti.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_StandardColorsCategoryLabel Definisce l'etichetta per la categoria Colori standard .
Valido solo quando ColorTemplate ha un valore pari a ThemeColors. Si tratta dell'unico modello che contiene categorie etichettate.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_StandardColorsTooltips Definisce una matrice di stringhe di descrizioni comando del campione di colore per la StandardColors griglia.
Ogni Drop-Down Color Picker ColorTemplate contiene una StandardColors griglia.
Nota: Vengono usati solo i suggerimenti per gli strumenti necessari per etichettare i campioni di colore visualizzati nella StandardColors griglia. Se vengono fornite meno etichette rispetto al numero di campioni nella StandardColors griglia, viene fornito un valore predefinito per i campioni che rimangono.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColors Definisce una matrice di valori COLORREF per i campioni di un Drop-Down Selezione colori.
Valido solo quando ColorTemplate ha un valore pari a ThemeColors.
Nota: Vengono visualizzati i valori COLORREF dell'oggetto ThemeColorGridRows x Columns della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di ThemeColors campioni dichiarati nel markup, vengono visualizzati spazi vuoti per i chip mancanti.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColorsTooltips Definisce la matrice di stringhe delle descrizioni comando del campione di colore per la ThemeColors griglia.
Valido solo quando ColorTemplate ha un valore pari a ThemeColors.
Nota: Vengono usati solo i suggerimenti per gli strumenti necessari per etichettare i campioni di colore visualizzati nella ThemeColors griglia. Se vengono fornite meno etichette rispetto al numero di campioni nella ThemeColors griglia, viene fornito un valore predefinito per i campioni che rimangono.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColorsCategoryLabel Definisce l'etichetta per la categoria Colori tema .
Valido solo quando ColorTemplate ha un valore pari a ThemeColors. Si tratta dell'unico modello che contiene categorie etichettate.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_TooltipDescription Definisce la stringa di caratteri per una descrizione della descrizione comando associata a un UI_PKEY_TooltipTitle.
Può essere aggiornato solo tramite invalidazione.
UI_PKEY_TooltipTitle Definisce la stringa di caratteri per una descrizione comando comando.
Può essere aggiornato solo tramite invalidazione.

Gestori di comandi

Il metodo IUICommandHandler::UpdateProperty viene usato per personalizzare una Drop-Down Selezione colori tramite le chiavi delle proprietà elencate in precedenza. Nell'esempio seguente viene illustrato come impostare i campioni di colore di un Drop-Down Selezione colori, in base a una preferenza di stile personalizzata o a una griglia di controllo personalizzata dichiarata nel markup.

STDMETHODIMP DropDownColorPickerHandler::UpdateProperty(
              UINT nCmdID,
              __in REFPROPERTYKEY key,
              __in_opt const PROPVARIANT* ppropvarCurrentValue,
              __out PROPVARIANT* ppropvarNewValue)
{
  HRESULT hr = E_NOTIMPL;
  if (key == UI_PKEY_ThemeColors)
  {
    COLORREF rThemeColors[TOT_THEME_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rThemeColors); i++)
    {
      // any COLORREF
      rThemeColors[i] = RGB(0, 255, 0); 
    }
    hr = InitPropVariantFromUInt32Vector(
           &rThemeColors, ARRAYSIZE(rThemeColors), ppropvarNewValue);
  }

  else if (key == UI_PKEY_StandardColors)
  {
    ULONG rStandardColors[TOT_STANDARD_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rStandardColors); i++)
    {
      // any COLORREF
      rStandardColors[i] = RGB(255, 0, 0); 
    }
    hr = InitPropVariantFromUInt32Vector(
           &rStandardColors, ARRAYSIZE(rStandardColors),ppropvarNewValue);
  }

  else if (key == UI_PKEY_ThemeColorsTooltips)
  {
    BSTR rThemeTooltips[TOT_THEME_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rThemeTooltips); i++)
    {
      // any constant character string
      rThemeTooltips[i] = L"Green"; 
    }
    hr = InitPropVariantFromStringVector((PCWSTR *)&rThemeTooltips, 50, ppropvarNewValue);
  }
  else if (key == UI_PKEY_StandardColorsTooltips)
  {
    static BSTR rStandardTooltips[TOT_STANDARD_COLORS];
    for (LONG i = 0; i < ARRAYSize(rStandardTooltips); i++)
    {
      // any constant character string
      rStandardTooltips[i] = L"Red"; 
    }
    hr = InitPropVariantFromStringVector(
           (PCWSTR *)&rStandardTooltips, 20, ppropvarNewValue);
  }
  return hr;
}

Nell'esempio seguente viene illustrata un'implementazione del metodo IUICommandHandler::Execute che espone i colori del controllo selezione colori Drop-Down all'applicazione Ribbon.

STDMETHODIMP DropDownColorPickerHandler::Execute(
                 UINT nCmdID,
                 UI_EXECUTIONVERB verb,
                 __in_opt const PROPERTYKEY* key,
                 __in_opt const PROPVARIANT* ppropvarValue,
                 __in_opt IUISimplePropertySet* pCommandExecutionProperties)
{
  HRESULT hr = E_NOTIMPL;
  if (*key == UI_PKEY_ColorType)
  {
    UI_SWATCHCOLORTYPE uType = 
      (UI_SWATCHCOLORTYPE)PropVariantToUInt32WithDefault(
        *ppropvarValue, 
        UI_SWATCHCOLORTYPE_NOCOLOR);

    COLORREF color;
    switch(uType)
    {
      case UI_SWATCHCOLORTYPE_RGB:
        PROPVARIANT var;
        pCommandExecutionProperties->GetValue(UI_PKEY_Color, &var);
        color = PropVariantToUInt32WithDefault(var, 0);
        break;
      case UI_SWATCHCOLORTYPE_AUTOMATIC:
        color = COLOR_WINDOWTEXT;
        break;
      case UI_SWATCHCOLORTYPE_NOCOLOR:
        color = MSONoFill;
        break;
    }

    // do with your color what you will...
    gInternalColor = color;
    hr = S_OK;
  }
  return hr;
}

Libreria di controlli di Windows Ribbon Framework

Elemento di markup DropDownColorPicker

Proprietà selezione colori

Personalizzazione di una barra multifunzione tramite definizioni di dimensioni e criteri di ridimensionamento

Esempio dropDownColorPicker