Condividi tramite


Selezione colori Drop-Down

Il framework della barra multifunzione di Windows fornisce 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 e contribuire a, coerenza e familiarità in un'ampia gamma di applicazioni.

Markup

Analogamente a tutti i controlli della barra multifunzione, il Drop-Down Selezione colori viene facilmente implementato e personalizzato tramite markup. Il framework fornisce diversi 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 Drop-Down Selezione colori.
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 chip di colore (o campione).
CommandName Nome della dichiarazione command associata.
IsAutomaticColorButtonVisible Visualizza (o nasconde) il pulsante automatico.
Valido solo quando ColorTemplate ha un valore ThemeColors o StandardColors.
IsNoColorButtonVisible Visualizza (o nasconde) il pulsante Nessun colore.
Valido per tutti i valori ColorTemplate.
RecentColorGridRows Numero di righe di chip colore (o campione) nell'area Colori recenti.
Valido solo quando ColorTemplate ha un valore pari a ThemeColors.
StandardColorGridRows Numero di righe di chip di colore (o campione) nell'area colori standard.
ThemeColorGridRows Numero di righe di chip colore (o campione) nell'area Colori tema.
Valido solo quando ColorTemplate ha un valore pari a ThemeColors.

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

     
ThemeColors:[newline] screenshot dell'elemento dropdowncolorpicker con l'attributo colortemplate impostato su 'themecolors'.[nuova riga] standardcolors:[newline] screenshot dell'elemento dropdowncolorpicker con l'attributo colortemplate impostato su 'standardcolors'.[nuova riga] highlightcolors:[newline] screenshot dell'elemento dropdowncolorpicker con l'attributo colortemplate impostato su

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

Nota

La selezione colori Drop-Down è un controllo Pulsante di valido in un modelloSizeDefinition.

<!-- 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 dell'applicazione specializzato per gestire le proprietà e gestire i comandi emessi 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::UpdateProper ty.

L'IUICommandHandler::UpdateProperty metodo di callback non viene eseguito e l'applicazione ha eseguito 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 di colore automatico.
Valido solo quando ColorTemplate ha un valore 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 possibilità per un controllo di rispondere all'interazione dell'utente.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_Keytip Può essere aggiornato solo tramite invalidazione.
UI_PKEY_Label Definisce la stringa di caratteri per un'etichetta di controllo.
Può essere aggiornato solo tramite invalidazione.
UI_PKEY_LargeHighContrastImage Definisce l'immagine a contrasto elevato di grandi dimensioni 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_LargeImage Definisce l'immagine di grandi dimensioni 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_MoreColorsLabel Definisce l'etichetta per il pulsante Altri colori....
Valido solo quando ColorTemplate ha un valore 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 pari a ThemeColors. Si tratta dell'unico modello che contiene categorie etichettate.
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty.
UI_PKEY_SmallHighContrastImage Definisce l'immagine a contrasto elevato di piccole dimensioni 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 l'immagine piccola 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 Selezione colori ColorTemplate contiene una griglia StandardColors.
Nota: vengono visualizzati i valori di COLORREFStandardColorGridRows x Columns della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di campioni StandardColors 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 dei campioni di colore per la griglia StandardColors.
Ogni Drop-Down Selezione colori ColorTemplate contiene una griglia StandardColors.
Nota: vengono usati solo i suggerimenti degli strumenti necessari per etichettare i campioni di colore visualizzati nella griglia StandardColors. Se viene fornito un numero inferiore di etichette rispetto al numero di campioni nella griglia StandardColors, 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 COLORREFThemeColorGridRows x Colonne della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di campioni ThemeColors 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 dei campioni di colore per la griglia ThemeColors.
Valido solo quando ColorTemplate ha un valore pari a ThemeColors.
Nota: vengono usati solo i suggerimenti degli strumenti necessari per etichettare i campioni di colore visualizzati nella griglia ThemeColors. Se viene fornito un numero inferiore di etichette rispetto al numero di campioni nella griglia ThemeColors, 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 del 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.
Può essere aggiornato solo tramite invalidazione.

Gestori dei comandi

Il metodo IUICommandHandler::UpdateProperty viene usato per personalizzare un 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 campioni 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 di 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

di esempio DropDownColorPicker