Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En färgväljare används för att bläddra igenom och välja färger. Som standard kan en användare navigera genom färger i ett färgspektrum eller ange en färg i textrutorna Red-Green-Blue (RGB), Hue-Saturation-Value (HSV) eller Hexadecimal.
Är det här rätt kontroll?
Använd färgväljaren för att låta en användare välja färger i din app. Du kan till exempel använda den för att ändra färginställningar, till exempel teckensnittsfärger, bakgrundsfärger eller apptemafärger.
Om din app är avsedd för ritning eller liknande uppgifter med hjälp av en penna, bör du överväga att använda Inking controls tillsammans med färgväljaren.
Recommendations
- Tänk på vilken typ av färgplockningsupplevelse som passar din app. Vissa scenarier kanske inte kräver detaljerad färgplockning och skulle dra nytta av en förenklad väljare
- För den mest exakta färgplockningsupplevelsen använder du kvadratspektrumet och ser till att det är minst 256x256px, eller inkluderar textinmatningsfälten så att användarna kan förfina sin valda färg.
- När det används i ett utfällbart fönster bör du inte bekräfta färgvalet genom att trycka i spektrumet eller justera skjutreglaget enbart. Så här bekräftar du markeringen:
- Ange inchecknings- och avbryt-knappar för att tillämpa eller avbryta markeringen. Om du trycker på bakåtknappen eller trycker utanför den utfällbara menyn stängs den och användarens val sparas inte.
- Du kan också bekräfta markeringen när du stänger den utfällbara menyn genom att antingen trycka utanför menyn eller trycka på tillbaka-knappen.
Skapa en färgväljare
- Viktiga API:er:ColorPicker-klass, Färgegenskap, ColorChanged-händelse
![]()
WinUI 3-galleriappen innehåller interaktiva exempel på WinUI-kontroller och funktioner. Hämta appen från Microsoft Store eller bläddra i källkoden på GitHub.
Det här exemplet visar hur du skapar en standardfärgväljare i XAML.
<ColorPicker x:Name="myColorPicker"/>
Som standard visar färgväljaren en förhandsgranskning av den valda färgen i det rektangulära fältet bredvid färgspektrumet. Du kan använda antingen händelsen ColorChanged eller egenskapen Color för att komma åt den valda färgen och använda den i din app. Se följande exempel för detaljerad kod.
Binda till den valda färgen
När färgmarkeringen ska börja gälla omedelbart kan du antingen använda data-bindning för att binda till egenskapen Color eller hantera händelsen ColorChanged för att komma åt den färg som valts i koden.
I det här exemplet binder du egenskapen Color för en SolidColorBrush som används som Fyllning för en rektangel direkt till färgväljarens valda färg. Varje ändring av färgväljaren resulterar i en omedelbar ändring av den bundna egenskapen.
<ColorPicker x:Name="myColorPicker"
ColorSpectrumShape="Ring"
IsColorPreviewVisible="False"
IsColorChannelTextInputVisible="False"
IsHexInputVisible="False"/>
<Rectangle Height="50" Width="50">
<Rectangle.Fill>
<SolidColorBrush Color="{x:Bind myColorPicker.Color, Mode=OneWay}"/>
</Rectangle.Fill>
</Rectangle>
I det här exemplet används en förenklad färgväljare med bara cirkeln och skjutreglaget, vilket är en vanlig "avslappnad" färgplockningsupplevelse. När färgändringen kan ses och sker i realtid på det berörda objektet behöver du inte visa färgförhandsgranskningsfältet. Mer information finns i avsnittet Anpassa färgväljaren .
Spara den valda färgen
I vissa fall vill du inte tillämpa färgändringen omedelbart. När du till exempel är värd för en färgväljare i en utfällbara meny rekommenderar vi att du endast använder den markerade färgen när användaren har bekräftat markeringen eller stänger den utfällbara menyn. Du kan också spara det valda färgvärdet som ska användas senare.
I det här exemplet använder du en färgväljare i en utfällbar meny med knapparna Bekräfta och Avbryt. När användaren bekräftar sitt färgval sparar du den valda färgen som ska användas senare i appen.
<Page.Resources>
<Flyout x:Key="myColorPickerFlyout">
<RelativePanel>
<ColorPicker x:Name="myColorPicker"
IsColorChannelTextInputVisible="False"
IsHexInputVisible="False"/>
<Grid RelativePanel.Below="myColorPicker"
RelativePanel.AlignLeftWithPanel="True"
RelativePanel.AlignRightWithPanel="True">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Content="OK" Click="confirmColor_Click"
Margin="0,12,2,0" HorizontalAlignment="Stretch"/>
<Button Content="Cancel" Click="cancelColor_Click"
Margin="2,12,0,0" HorizontalAlignment="Stretch"
Grid.Column="1"/>
</Grid>
</RelativePanel>
</Flyout>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Button x:Name="colorPickerButton"
Content="Pick a color"
Flyout="{StaticResource myColorPickerFlyout}"/>
</Grid>
private Color myColor;
private void confirmColor_Click(object sender, RoutedEventArgs e)
{
// Assign the selected color to a variable to use outside the popup.
myColor = myColorPicker.Color;
// Close the Flyout.
colorPickerButton.Flyout.Hide();
}
private void cancelColor_Click(object sender, RoutedEventArgs e)
{
// Close the Flyout.
colorPickerButton.Flyout.Hide();
}
Konfigurera färgväljaren
Alla fält är inte nödvändiga för att låta en användare välja en färg, så färgväljaren är flexibel. Den innehåller en mängd olika alternativ som gör att du kan konfigurera kontrollen så att den passar dina behov.
Om användaren till exempel inte behöver exakt kontroll, som att välja en överstrykningsfärg i en anteckningsapp, kan du använda ett förenklat användargränssnitt. Du kan dölja textinmatningsfälten och ändra färgspektrumet till en cirkel.
När användaren behöver exakt kontroll, som i en grafisk designapp, kan du visa både skjutreglage och textinmatningsfält för varje aspekt av färgen.
Visa cirkelspektrumet
Det här exemplet visar hur du använder egenskapen ColorSpectrumShape för att konfigurera färgväljaren att använda ett cirkulärt spektrum i stället för standardrutan.
<ColorPicker x:Name="myColorPicker"
ColorSpectrumShape="Ring"/>
När du måste välja mellan fyrkants- och cirkelfärgspektrumet är ett primärt övervägande noggrannhet. En användare har mer kontroll när de väljer en specifik färg med en fyrkant eftersom mer av färgomfånget visas. Du bör betrakta cirkelspektrumet som mer av den "avslappnade" färgvalsupplevelsen.
Visa alfakanalen
I det här exemplet aktiverar du ett skjutreglage för opacitet och textruta i färgväljaren.
<ColorPicker x:Name="myColorPicker"
IsAlphaEnabled="True"/>
Visa en enkel väljare
Det här exemplet visar hur du konfigurerar färgväljaren med ett enkelt användargränssnitt för "tillfällig" användning. Du visar det cirkulära spektrumet och döljer standardrutorna för textinmatning. När färgändringen kan ses och sker i realtid på det berörda objektet behöver du inte visa färgförhandsgranskningsfältet. Annars ska du låta färgförhandsgranskningen vara synlig.
<ColorPicker x:Name="myColorPicker"
ColorSpectrumShape="Ring"
IsColorPreviewVisible="False"
IsColorChannelTextInputVisible="False"
IsHexInputVisible="False"/>
Ange layoutriktningen
Använd egenskapen Orientering för att ange om ColorPicker ska justeras lodrätt eller vågrätt. Detta påverkar platsen för redigeringskontrollerna i förhållande till färgspektrumet. Som standard är orienteringen Lodrät.
<ColorPicker IsAlphaEnabled="True"
Orientation="Horizontal"/>
Anmärkning
Om orienteringen är inställd på vågrät tillämpar ColorPicker inte egenskapen IsMoreButtonVisible.
Visa eller dölja ytterligare funktioner
Den här tabellen visar alla alternativ som du kan använda för att konfigurera ColorPicker-kontrollen.
| Egenskap | Egenskaper |
|---|---|
| Färgspektrum | ÄrFärgspektrumSynligt, FärgspektrumsForm, FärgspektrumsKomponenter |
| Förhandsgranskning av färg | ÄrFärgFörhandsgranskningSynlig |
| Färgvärden | IsColorSliderVisible, IsColorChannelTextInputVisible |
| Ogenomskinlighetsvärden | ÄrAlphaAktiverad, ÄrAlphaSkjutreglageSynligt, ÄrAlphaTextInputSynligt |
| Hexvärden | ÄrHexInputSynlig |
Anmärkning
IsAlphaEnabled måste vara sant för att visa textrutan och skjutreglaget för opacitet. Synligheten för indatakontrollerna kan sedan ändras med hjälp av egenskaperna IsAlphaTextInputVisible och IsAlphaSliderVisible. Mer information finns i API-dokumentationen.
Relaterade artiklar
Windows developer