Rychlý tip: Vždy implementujte všechny VisualStates!

WinUI

6 years ago

Při vývoji UWP aplikace jsem narazil na zajímavou zvláštnost. XAML VisualStates definují vzhled ovladacích prvků v různých stavech. Přestože obvykle nemusíte rozlišovat všechny z nich, vyplatí se je přesto implementovat (i když jde jen o copy-paste nějakého jiného stavu) nebo narazíte na těžko vysvětlitelné problémy. V mém případě jsem upravoval vzhled ListViewItem a zapomněl jsem zahrnout implementaci pro stavy PointerOverSelected a PressedSelected. Překvapivě na mém zařízení vše fungovalo jak mělo a použil se jako fallback vzhled stavu Selected. Později jsem však zjistil, že na zařízeních s jinou verzí systému zůstávaly položky seznamu ve stavu PointerOver dokud je neopustil kurzor myši (a i tento přístup dává smysl). Rozdílné chování mezi verzemi systému je obzvláště zajímavé, protože "problém" se původně neprojevoval ve stabilních buildech Windows 10 Creators Update, ale nyní se zde projevuje také (pravděpodobně vlivem aktualizací).