XAML.cz Magazín moderních technologií založených na XAML

Novinky ve WPF 4 – Vlastní Caret a selekce

Napsáno pro WPF od Jarda Jirava

Je tady další pokračování seriálu představující novinky ve WPF 4.0, tentokrát se podívám na to, co se změnilo ve zpracování textu a práce s ním. Těch novinek je maličko více než v případě Bindingu, ale všechny stojí určitě za to, a pokud jste se rozmýšleli zda použít právě WPF pro vaši další aplikaci a práce s textem byla jednou z položek na záporné straně, můžete tuto škrtnout.

WPF umožňuje různé hrátky s uživatelským prostředím a pokud jste zdatný grafik a designer UI, pak vám mohli některé vlastnosti scházet k dokonalosti a dovedení uživatelského prožitku z používání aplikace na vrchol.

Podívejme se tedy, jak si vytvořit vlastní caret a vlastní výběr (selekci).

Vlastní caret

Caret představuje blikající čáru v textovém vstupním poli označující místo, kde se nachází kurzor – místo, od kterého se začne psát text. Tento kurzor je standardně černý, jak je vidět na následujícím obrázku

standardní caret

Ale co když máme nějaký vlastní použitý design a černá barva kurzoru se nám nehodí, třeba jen proto, že není dostatečně kontrastní. Nyní máme možnost nastavit vlastní štětec – Brush – který bude použit pro vykreslení tohoto kurzoru. Můžeme tak volit mezi různým barevným provedením a výsledek pak může vypadat jak na následujícím obrázku

vlastní caret

Na této ukázce je použit LinearGradientBrush, nic vám však nebrání použít jakýkoliv jiný štětec [1], [2], [3].

Ještě schází ukázka použití, které je velice jednoduché

<TextBox.CaretBrush>
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
        <GradientStop Offset="0" Color="Yellow" />
        <GradientStop Offset="0.5" Color="LightBlue" />
        <GradientStop Offset="1.0" Color="Red" />
    </LinearGradientBrush>
</TextBox.CaretBrush>

Vlastní výběr – selekce

V tuto chvíli máme nějakým způsobem nastylovaný kurzor, kterým určujeme pozici pro vstup textu. Ale jakmile uživatel provede výběr již napsaného textu, stále se nám zobrazí v oné jednolité, lehce průhledné barvě, jak naznačuje další obrázek

standardní selekce

což se nám samozřejmě nemusí líbit, ať už ze stejného důvodu, jako v případě černého kurzoru, který může být špatně kontrastní vůči okolním prvkům, nebo jen chceme provedený výběr označit uživateli v souladu s celým uživatelským rozhraním či mu nabídnout možnost si definovat vlastní barvy.

Obdobně jako u kurzoru tak můžeme definovat vlastní štětec, který bude použit pro výběr. Já jsem ponechal nastavení shodné s kurzorem a můj výběr tak vypadá následovně

vlastní selekce

Opět ještě uvedu část XAML kódu, který jsem použil uvnitř deklarace TextBox elementu

<TextBox.SelectionBrush>
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
        <GradientStop Offset="0" Color="Yellow" />
        <GradientStop Offset="0.5" Color="LightBlue" />
        <GradientStop Offset="1.0" Color="Red" />
    </LinearGradientBrush>
</TextBox.SelectionBrush>

Závěrem

Pro vytváření poutavých uživatelských rozhraní, ze kterých má mít uživatel ten správný zážitek je dobré myslet i na maličkosti. Jednou z takových maličkostí je právě i možnost nastylování kurzoru, případně použití vlastního barevného schématu pro výběr textu. V tomto článku jsem chtěl demonstrovat postup, který je možné použít od verze WPF 4.0. Příště se opět podíváme na zpracování textu a novinek, které se v poslední verzi WPF objevily.

Komentáře

ukládám komentář, vyčkejte prosím..
  1. Buďte první, kdo napíše komentář.

@xamlcz

  • RT @alesroubicek Zajímalo by mě, kolik lidí dělá ve WPF/Silverlight a nečte http://www.xaml.cz/? // nečtenáři, okamžitě napravit
  • Vyšel update pro Silverlight http://bit.ly/b6hYT2 řešící některé záležitosti - MediaStream, DataGrid, Storage, Startup perf., MouseWheel ...
  • Jestli je vaší oblibou vytištěný poster s class library reference, tak jeden k WPF je možné stáhnout a vytisknout odsud http://bit.ly/cvtejc
  • Microsoft Ribbon for WPF enables great Windows Applications - Works in WPF 3.x or 4.0. Available today! http://bit.ly/cLDSMa
  • tak Silverlight pro Symbian asi moc dlouhého trvání mít nebude a nebo Nokia bude Symbian 60 5th generation vyvíjet i nadále?