Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Základní textová rozhraní API v oboru názvů Windows.UI.Text.Core umožňují aplikaci pro Windows přijímat textové vstupy z libovolné textové služby podporované na zařízeních s Windows. Rozhraní API jsou podobná rozhraním Text Services Framework, protože aplikace nemusí mít podrobné znalosti textových služeb. Aplikace tak může přijímat text v libovolném jazyce a z libovolného typu vstupu (například klávesnice, řeči nebo pera).
Důležitá rozhraní API: Windows.UI.Text.Core, CoreTextEditContext
Proč používat základní textová rozhraní API?
U mnoha aplikací stačí ovládací prvky textového pole XAML nebo HTML pro zadávání a úpravy textu. Pokud ale vaše aplikace zpracovává složité textové scénáře, jako je aplikace pro zpracování textu, budete možná potřebovat flexibilitu vlastního ovládacího prvku pro úpravy textu. K vytvoření ovládacího prvku pro úpravu textu můžete použít rozhraní API pro klávesnici CoreWindow, ale tato rozhraní nenabízejí způsob přijímání textového zadání založeného na složení, což je nezbytné pro podporu východoasijských jazyků.
Místo toho použijte rozhraní API Windows.UI.Text.Core , pokud potřebujete vytvořit vlastní ovládací prvek pro úpravy textu. Tato rozhraní API jsou navržená tak, aby poskytovala velkou flexibilitu při zpracování textového vstupu v libovolném jazyce a poskytovala prostředí pro text, které je pro vaši aplikaci nejvhodnější. Ovládací prvky pro zadávání textu a úpravy vytvořené pomocí základních textových rozhraní API mohou přijímat textové vstupy ze všech existujících metod zadávání textu na zařízeních s Windows, včetně editorů vstupních metod (IME) založených na Text Services Framework a ručního psaní na počítačích, až po klávesnici WordFlow (která poskytuje automatickou opravu, predikci a diktování) na mobilních zařízeních.
Architektura
Následuje jednoduchá reprezentace textového vstupního systému.
- "Aplikace" představuje aplikaci pro Windows hostující vlastní ovládací prvek pro úpravy vytvořený pomocí základních textových rozhraní API.
- Rozhraní API Windows.UI.Text.Core usnadňují komunikaci s textovými službami prostřednictvím Windows. Komunikace mezi ovládacím prvku pro úpravy textu a textovými službami se zpracovává primárně prostřednictvím objektu CoreTextEditContext , který poskytuje metody a události pro usnadnění komunikace.
Rozsahy textu a výběr
Ovládací prvky pro úpravy poskytují místo pro zadávání textu a uživatelé očekávají, že text budou upravovat kdekoli v tomto prostoru. Tady vysvětlujeme systém umístění textu používaný základními textovými rozhraními API a způsob znázornění rozsahů a výběrů v tomto systému.
Pozice kurzoru aplikace
Rozsahy textu používané se základními textovými rozhraními API jsou vyjádřeny z hlediska pozic kurzoru. Pozice kurzoru aplikace (ACP) je číslo číslované od nuly, které označuje počet znaků od začátku textového proudu bezprostředně před kurzorem, jak je znázorněno zde.
Rozsahy textu a výběr
Rozsahy a výběry textu jsou reprezentovány strukturou CoreTextRange , která obsahuje dvě pole:
Pole | Datový typ | Popis |
---|---|---|
StartCaretPosition | číslo [JavaScript] | System.Int32 [.NET] | int32 [C++] | Počáteční pozice rozsahu je ACP bezprostředně před prvním znakem. |
EndCaretPosition | číslo [JavaScript] | System.Int32 [.NET] | int32 [C++] | Koncová pozice rozsahu je ACP bezprostředně za posledním znakem. |
Například v oblasti textu zobrazené dříve určuje oblast [0, 5] slovo "Hello". StartCaretPosition musí být vždy menší než nebo rovno EndCaretPosition. Rozsah [5, 0] je neplatný.
Bod vkládání
Aktuální pozice kurzoru, často označovaná jako vkládací bod, je reprezentována nastavením StartCaretPosition tak, aby byla rovna EndCaretPosition.
Nesouvislý výběr
Některé ovládací prvky pro úpravy podporují nesouvislé výběry. Aplikace Microsoft Office například podporují více libovolných výběrů a mnoho editorů zdrojového kódu podporuje výběr sloupců. Základní textová rozhraní API ale nepodporují nesouvislé výběry. Ovládací prvky pro úpravy musí hlásit pouze jeden souvislý výběr, nejčastěji aktivní dílčí oblast nesouvislých výběrů.
Například následující obrázek ukazuje textový proud se dvěma nesouvisenými výběry: [0, 1] a [6, 11], pro které musí ovládací prvek pro úpravy hlásit pouze jeden ([0, 1] nebo [6, 11]).
Práce s textem
Třída CoreTextEditContext umožňuje tok textu mezi Windows a editačními ovládacími prvky prostřednictvím události TextUpdating, události TextRequested a metody NotifyTextChanged.
Váš ovládací prvek pro úpravy přijímá text prostřednictvím události TextUpdating, která se generuje, když uživatelé interagují s metodami zadávání textu, jako jsou klávesnice, řeč nebo IME.
Když změníte text v ovládacím prvku pro úpravy, například vložením textu do ovládacího prvku, musíte windows upozornit voláním NotifyTextChanged.
Pokud textová služba vyžaduje nový text, vyvolá se událost TextRequested . Do obslužn é rutiny události
Příjem aktualizací textu
Ovládací prvek pro úpravy by měl obvykle přijímat žádosti o aktualizaci textu, protože představují text, který chce uživatel zadat. U vašeho ovládacího prvku pro úpravy se v obslužné rutině události TextUpdating očekávají tyto akce:
- Vložte text specifikovaný v CoreTextTextUpdatingEventArgs.Text na pozici specifikovanou v CoreTextTextUpdatingEventArgs.Range.
- Umístěte výběr na pozici zadanou v CoreTextTextUpdatingEventArgs.NewSelection.
- Upozorněte systém, že aktualizace byla úspěšná, tím že nastavíte CoreTextTextUpdatingEventArgs.Result na CoreTextTextUpdatingResult.Succeeded.
Například toto je stav editačního prvku než uživatel napíše "d". Vkládací bod je na [10, 10].
Když uživatel zadá "d", je vyvolána událost TextUpdating s následujícími CoreTextTextUpdatingEventArgs daty.
V ovládacím prvku pro úpravy použijte zadané změny a nastavte Výsledek na Úspěch. Tady je stav ovládacího prvku po použití změn.
Odmítnutí aktualizací textu
Někdy nelze použít aktualizace textu, protože požadovaný rozsah je v oblasti ovládacího prvku pro úpravy, který by neměl být změněn. V takovém případě byste neměli použít žádné změny. Místo toho upozorněte systém, že aktualizace selhala nastavením CoreTextTextUpdatingEventArgs.Result na CoreTextTextUpdatingResult.Failed.
Představte si například ovládací prvek pro úpravy, který přijímá pouze e-mailovou adresu. Mezery by měly být odmítnuty, protože e-mailové adresy nemohou obsahovat mezery, takže když jsou vyvolány události TextUpdating pro klávesu mezerníku, měli byste jednoduše nastavit Výsledek na Nezdařilo se ve vašem ovládacím prvku pro úpravu.
Upozorňování změn textu
Někdy váš ovládací prvek pro úpravy provádí změny textu, například když je text vložen nebo automaticky opraven. V těchto případech je nutné upozornit textové služby těchto změn voláním NotifyTextChanged metoda.
Jedná se například o stav ovládacího prvku pro úpravy před vložením "World". Bod vložení je na [6, 6].
Uživatel provede akci vložení a ovládací prvek pro úpravy po použití změn:
V takovém případě byste měli volat NotifyTextChanged s těmito argumenty:
- modifiedRange = [6, 6]
- newLength = 5
- newSelection = [11, 11]
Jedna nebo více událostí TextRequested bude následovat; tyto události zpracováváte, abyste aktualizovali text, se kterým textové služby pracují.
Přepsání textových aktualizací
V rámci editačního prvku možná budete chtít nahradit aktualizaci textu, abyste poskytli funkce automatické opravy.
Představte si například ovládací prvek pro editaci, který poskytuje funkci opravy, jež formalizuje zkrácené tvary. Toto je stav ovládacího prvku pro úpravy před tím, než uživatel zadá klávesu mezery k aktivaci opravy. Vložený bod je na [3, 3].
Uživatel stiskne mezerník a vyvolá se odpovídající událost TextUpdating. Ovládací prvek pro úpravy přijímá aktualizaci textu. Toto je stav ovládacího prvku pro úpravy po krátkou chvíli před dokončením opravy. Bod vložení je na [4, 4].
Mimo obslužnou rutinu události TextUpdating editační ovládací prvek provede následující opravu. Toto je stav ovládacího prvku pro úpravy po dokončení opravy. Pozice pro vložení je na [5, 5].
V takovém případě byste měli volat NotifyTextChanged s těmito argumenty:
- upravenýRozsah = [1, 2]
- newLength = 2
- newSelection = [5, 5]
Jedna nebo více událostí TextRequested bude následovat; tyto události zpracováváte, abyste aktualizovali text, se kterým textové služby pracují.
Poskytnutí požadovaného textu
Je důležité, aby textové služby měly správný text, aby poskytovaly funkce, jako je automatická oprava nebo predikce, zejména pro text, který už existoval v ovládacím prvku pro úpravy, od načtení dokumentu, například textu, který je vložen ovládacím prvku pro úpravy, jak je vysvětleno v předchozích částech. Proto při každém vyvolání události TextRequested musíte poskytnout aktuální text ve vašem ovládacím prvku pro úpravy pro zadaný rozsah.
Ve službě CoreTextTextRequest bude rozsah , který váš ovládací prvek pro úpravy nemůže pojmout as-is. Například rozsah je větší než velikost ovládacího prvku pro úpravy v době události TextRequested nebo je konec rozsahu mimo hranice. V těchto případech byste měli vrátit jakýkoli rozsah, který dává smysl, což je obvykle podmnožina požadovaného rozsahu.
Související články
Vzorky
Archivní ukázky
Windows developer