Средство выбора цвета Drop-Down
Платформа ленты Windows предоставляет специализированный Drop-Down элемент управления "Выбор цвета", который предоставляет различные параметры цвета с помощью кнопки разделения и настраиваемого раскрывающегося селектора цветов.
Введение
Эмулируя внешний вид и функциональные возможности средства выбора цветов Microsoft Office, платформа ленты может использовать преимущества согласованности и знакомство с различными приложениями, а также способствовать их повышению.
разметку
Как и все элементы управления ленты, средство выбора цвета Drop-Down легко реализуется и настраивается с помощью разметки. Платформа предоставляет ряд атрибутов элементов для средства выбора цвета Drop-Down для предоставления различных уровней функциональности. В следующей таблице перечислены Drop-Down атрибуты средства выбора цвета.
attribute | Описание |
---|---|
ColorTemplate | Шаблоны макетов, указывающие тип Drop-Down палитры. Существует три шаблона, каждый из которых задает макет элемента управления и значения по умолчанию для связанных атрибутов и ключей свойств.
|
ChipSize | Размер каждой цветовой микросхемы (или образца).
|
Столбцы | Количество столбцов цветной микросхемы (или образца). |
CommandName | Имя связанного объявления command. |
IsAutomaticColorButtonVisible | Отображает (или скрывает) кнопку Автоматически . Допустимо, только если ColorTemplate имеет значение ThemeColors или StandardColors . |
IsNoColorButtonVisible | Отображает (или скрывает) кнопку Без цвета . Допустимо для всех значений ColorTemplate . |
RecentColorGridRows | Количество строк цветовой микросхемы (или образца) в области Последние цвета . Допустимо, только если ColorTemplate имеет значение ThemeColors . |
StandardColorGridRows | Количество строк цветовой микросхемы (или образца) в области Стандартные цвета . |
ThemeColorGridRows | Количество строк цветовой фишки (или образца) в области Цвета темы . Допустимо, только если ColorTemplate имеет значение ThemeColors . |
На следующих снимках экрана показаны макеты по умолчанию Drop-Down палитры для трех шаблонов цветов.
ThemeColors Снимок экрана:[newline] [новая строка] |
standardcolors Снимок экрана:[newline] [новая строка] |
highlightcolors Снимок экрана:[newline] |
Базовая разметка, необходимая для каждого типа Drop-Down палитры, показана в следующих примерах:
Примечание
Выбор цвета Drop-Down является допустимым элементом управления Кнопка в шаблоне 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="cmdDropDownColorPickerGroup"
SizeDefinition="ThreeButtons">
<DropDownColorPicker
CommandName="cmdDropDownColorPickerThemeColors"
ColorTemplate="ThemeColors"/>
<DropDownColorPicker
CommandName="cmdDropDownColorPickerStandardColors"
ColorTemplate="StandardColors"/>
<DropDownColorPicker
CommandName="cmdDropDownColorPickerHighlightColors"
ColorTemplate="HighlightColors"
StandardColorGridRows="1"/>
</Group>
Код
Как специализированный элемент управления, поддерживающий настройку, любая реализация Drop-Down Color Picker, использующее эти возможности, требует специального кода приложения для управления свойствами и обработки любых команд, выдаваемых элементом управления .
Свойства
Платформа ленты определяет коллекцию ключей свойств для элемента управления Drop-Down Color Picker.
Как правило, свойство выбора цвета Drop-Down обновляется в пользовательском интерфейсе ленты путем аннулирования команды, связанной с элементом управления, с помощью вызова метода IUIFramework::InvalidateUICommand . Событие недействительности обрабатывается и свойство обновляется с помощью метода обратного вызова IUICommandHandler::UpdateProperty .
Метод обратного вызова IUICommandHandler::UpdateProperty не выполняется, и приложение запросит обновленное значение свойства, пока свойство не потребуется платформе. Например, при активации вкладки и отображении элемента управления в пользовательском интерфейсе ленты или при отображении подсказки.
Примечание
В некоторых случаях свойство можно получить с помощью метода IUIFramework::GetUICommandProperty и задать с помощью метода IUIFramework::SetUICommandProperty .
В следующей таблице перечислены ключи свойств, связанные с элементом управления Drop-Down Color Picker.
Ключ свойства | Описание | Примечания |
---|---|---|
UI_PKEY_AutomaticColorLabel | Определяет метку для кнопки "Автоматический цвет". Допустимо только в том случае , если ColorTemplate имеет значение ThemeColors или StandardColors . |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_Color | Определяет выбранное значение цвета в виде COLORREF. Допустимо только в том случае, если UI_PKEY_ColorType имеет значение UI_SWATCHCOLORTYPE_RGB . |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_ColorType | Определяет выбранный тип цвета. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_Enabled | Определяет возможность реагирования элемента управления на взаимодействие с пользователем. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_Keytip | Может быть обновлено только через недействительность. | |
UI_PKEY_Label | Определяет строку символов для метки элемента управления. |
Может быть обновлено только через недействительность. |
UI_PKEY_LargeHighContrastImage | Определяет большое высококонтрастное изображение, отображаемое для элемента управления . |
Может быть обновлено только через недействительность. Дополнительные сведения о форматах изображений см. в разделе Указание ресурсов изображений ленты. |
UI_PKEY_LargeImage | Определяет большое изображение, отображаемое для элемента управления. |
Может быть обновлено только через недействительность. Дополнительные сведения о форматах изображений см. в разделе Указание ресурсов изображений ленты. |
UI_PKEY_MoreColorsLabel | Определяет метку для кнопки Дополнительные цвета. Допустимо только в том случае , если ColorTemplate имеет значение ThemeColors или StandardColors . |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_NoColorLabel | Определяет метку для кнопки Без цвета . Допустимо для всех значений ColorTemplate . |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_RecentColorsCategoryLabel | Определяет метку для категории Последние цвета . Допустимо только в том случае , если ColorTemplate имеет значение ThemeColors . Это единственный шаблон, содержащий помеченные категории. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_SmallHighContrastImage | Определяет небольшое изображение с высокой контрастностью, отображаемое для элемента управления . |
Может быть обновлено только через недействительность. Дополнительные сведения о форматах изображений см. в разделе Указание ресурсов изображений ленты. |
UI_PKEY_SmallImage | Определяет небольшое изображение, отображаемое для элемента управления . |
Может быть обновлено только через недействительность. Дополнительные сведения о форматах изображений см. в разделе Указание ресурсов изображений ленты. |
UI_PKEY_StandardColors | Определяет массив значений COLORREF для образцов Drop-Down палитры. Каждая Drop-Down ColorTemplate палитры содержит сетку StandardColors . Примечание: Отображаются значения COLORREF из исходного столбца StandardColorGridRows x массива. Если массив определяет меньше цветов, чем количество образцов, объявленных StandardColors в разметке, для отсутствующих чипов отображаются пустые пробелы. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_StandardColorsCategoryLabel | Определяет метку для категории Стандартные цвета . Допустимо только в том случае , если ColorTemplate имеет значение ThemeColors . Это единственный шаблон, содержащий помеченные категории. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_StandardColorsTooltips | Определяет массив строк с подсказками цветовой палитры для сетки StandardColors .Каждая Drop-Down ColorTemplate палитры содержит сетку StandardColors . Примечание: Используются только подсказки, необходимые для маркировки цветовых образцов, отображаемых в сетке StandardColors . Если указано меньше меток, чем количество образцов в сетке StandardColors , для остальных образцов предоставляется значение по умолчанию. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColors | Определяет массив значений COLORREF для образцов Drop-Down палитры. Допустимо только в том случае , если ColorTemplate имеет значение ThemeColors . Примечание: Отображаются значения COLORREF из исходного столбца ThemeColorGridRows x массива. Если массив определяет меньше цветов, чем количество образцов, объявленных ThemeColors в разметке, для отсутствующих чипов отображаются пустые пробелы. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColorsTooltips | Определяет массив строк с подсказками цветовой палитры для сетки ThemeColors .Допустимо только в том случае , если ColorTemplate имеет значение ThemeColors . Примечание: Используются только подсказки, необходимые для маркировки цветовых образцов, отображаемых в сетке ThemeColors . Если указано меньше меток, чем количество образцов в сетке ThemeColors , для остальных образцов предоставляется значение по умолчанию. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColorsCategoryLabel | Определяет метку для категории Цвета темы . Допустимо только в том случае , если ColorTemplate имеет значение ThemeColors . Это единственный шаблон, содержащий помеченные категории. |
Поддерживает IUIFramework::GetUICommandProperty и IUIFramework::SetUICommandProperty. |
UI_PKEY_TooltipDescription | Определяет строку символов для описания подсказки, связанной с UI_PKEY_TooltipTitle. |
Может быть обновлено только через недействительность. |
UI_PKEY_TooltipTitle | Определяет строку символов для подсказки команды. |
Может быть обновлено только через недействительность. |
Обработчики команд
Метод IUICommandHandler::UpdateProperty используется для настройки Drop-Down палитры с помощью перечисленных выше ключей свойств. В следующем примере показано, как задать цветовые образцы Drop-Down палитры на основе предпочтений пользовательского стиля или настраиваемой сетки образцов, объявленной в разметке.
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;
}
В следующем примере показана реализация метода IUICommandHandler::Execute , который предоставляет Drop-Down цвета палитры выбора цвета для приложения ленты.
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;
}