Device family state trigger pro UWP

Univerzální platforma Windows funguje na mnoha různých typech zařízení (device family). Aby aplikace vypadala skvěle na různých zařízeních, většinou lze použít AdaptiveTrigger, který reaguje na různá rozlišení displeje. Pokud však potřebujeme cílit na konkrétní rodinu zařízení, je možné si pro tento účel vytvořit vlastní state trigger.

Rozpoznání rodiny zařízení

Nejprve musíme zjistit, do jaké rodiny zařízení patří. To můžeme udělat pomocí jednoduché řetězcové hodnoty ve vlastnosti

Tato hodnota začíná prefixem Windows. , po které následuje název rodiny zařízení. Abychom mohli pracovat v silně typovaném prostředí, vytvoříme si jednoduchý device family helper který využívá výčtový typ.

Tento helper přečte systémovou vlastnost a rozpozná rodinu zařízení a uloží ji do read-only vlastnosti.

Zahrnuli jsme i variantu  Unidentified  pro rodiny zařízení, které budou vydány až v budoucnu. Když se objeví nově podporovaný typ, můžeme přidat novou hodnotu do našeho výčtového typu a kód odpovídajícím způsobem aktualizovat.

Device family state trigger

Vytvoření vlastního state triggeru je poměrně jednoduché, zděděním od třídy StateTriggerBase  a můžeme při tom využít náš nový helper:

Rodinu zařízení můžeme specifikovat pomocí vlastnosti TargetDeviceFamily  a v reakci na událost  PropertyChanged  aktivovat nebo deaktivovat trigger.

Tento jendoduchý úryvek kódu používá náš trigger a zobrazuje TextBlock, který odpovídá našemu zařízení.

Náš trigger nyní můžeme použít pro zobrazení a skrývání ovladacích prvků, změnu ItemTemplate v seznamech a další úpravy.

Zdrojový kód

Zdrojový kód pro tento článek je dostupný na mém GitHubu.

Shrnutí

Pokud nabízíme uživatelům funkčnost specifickou pro konkrétní rodinu zařízení, je pravděpodobné, že budeme chtít upravit obsah zobrazený na stránce. V tom nám pomůže state trigger, který jsme si právě vytvořili.

Pokud chcete dělat ještě drastičtější změny, můžete vytvořit separátní device family view. Tuto techniku si ukážeme v některém z příštích článků.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*