Úprava viditelnosti pojmenovaných XAML elementů

Atribut x:Name v XAMLu vytváří pro elementy členské položky třídy, které lze použít pro přístup k ovladacím prvkům z kódu. Narozdíl od WPF však v UWP jsou tyto položky třídy definovány jako private, což znamená, že k nim je možné přistupovat pouze z třídy samotné. Pokud vezmeme v potaz, že z hlediska architektury by to byl špatný nápad, je možné toto chování změnit? Pokračovat ve čtení “Úprava viditelnosti pojmenovaných XAML elementů”

Modifying XAML named field visibility

The x:Name attribute in XAML creates named fields that you can use to access the controls from the code-behind. However, as opposed to WPF, in UWP these fields are private which means you can access them from the code-behind only, not from other classes. While noting it is a good idea from architectural standpoint, is it possible to change this behavior? Pokračovat ve čtení “Modifying XAML named field visibility”

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

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í).

Quick tip: Always implement all VisualStates!

I have come across an interesting oddity while building a UWP app.

XAML VisualStates define the visual look of control in different states. Even though you sometimes don’t need to make distinction for all of them, you should still implement them however (even if they are just a simple copy-paste of another style) or you might meet some inexplicable problems.

In my case I have customized the ListViewItem  style and forgot to include implementations for the PointerOverSelected  and PressedSelected  states. Surprisingly everything worked as expected on my devices, as the visual used the Selected  state as fallback. However, I have later found out the same did not happen on other devices and the list view items stayed in the PointerOver state until the mouse cursor moved away (which also makes sense).

This difference in behavior is especially interesting, as the problem did not originally occur on the stable builds of Windows 10 Creators Update, but now it seems to occur as well (maybe after some patches?).

Výběr formátu správy NuGet balíčků pro nové projekty

Nové Visual Studio 2017 přichází s podporou pro nový formát správy NuGet balíčků – PackageReference, který nahrazuje staré formáty Packages.config a project.json a přidává odkazy na balíčky přímo do projektového souboru. Tento formát by měl být do budoucna pro NuGet standardem (nebo-li, slovy NuGet týmu “the one NuGet standard to rule them all” 🙂 ), ale není podporován ve starších verzích Visual Studia. Podle vašho konkrétního scénáře můžete chtít zvolit vhodný formát správy balíčku přesně podle typu projektu, na kterém pracujete. Naštěstí Visual Studio právě tuto možnost nabízí pomocí nového nastavení. Pokračovat ve čtení “Výběr formátu správy NuGet balíčků pro nové projekty”

Choosing NuGet package management format for new projects

The new Visual Studio 2017 comes with support for a new PackageReference package management format, which replaces the old Packages.config and project.json formats and puts the package references directly in the project file.This is bound to be the standard for NuGet in the future (or the one NuGet standard to rule them all, as they say 🙂 ), but is not supported in older versions of Visual Studio. Depending on your scenario, you might want to choose the appropriate package management format that suits your needs. Luckily, Visual Studio offers you this option via a new setting. Pokračovat ve čtení “Choosing NuGet package management format for new projects”

Nekonzistentní chování Resources v ItemTemplate pro Anniversary Update

Zdá se, že Windows 10 Anniversary Update obsahuje skrytou chybu ve zpracování Resources unvitř ItemTemplate pro položky seznamů. Narazil jsem na ni při práci na UWP aplikaci a popíšu problém samotný spolu s řešením, kterým můžete zajistit, že se vaše aplikace bude chovat správně na všech verzích Windows 10. Pokračovat ve čtení “Nekonzistentní chování Resources v ItemTemplate pro Anniversary Update”

Resource behavior inconsistency for ItemTemplates of list controls in Anniversary Update

It appears that the Anniversary Update has a hidden buggy behavior concerning Resources in ItemTemplates of list controls. I have hit this problem while working on an UWP app and I will describe the problem along with a workaround, which you can use to make sure your app will behave correctly on all versions of Windows 10. Pokračovat ve čtení “Resource behavior inconsistency for ItemTemplates of list controls in Anniversary Update”