ItemsSource a SelectedItem

Poměrně obvyklou chybou při psaní XAMLu (především u mě, já ji doslova nemohu přestat psát) je prohození pořadí dependency properties ItemsSource a SelectedItem u ovládacích prvků pro zobrazení výběrových seznamů.

Ukažme si to v kontextu prvku ListView ve WinRT. Pro binding kolekce k ListView použijeme vlastnost ItemsSourcePro vybrání jednoho z jejích prvků použijeme SelectedItem.

To zní dobře ne? Bohužel.

XAML parser prochází náš ListView v pořadí zleva doprava. Když narazí na SelectedItem, pokusí se vybrat tento prvek v připojené kolekci. Bohužel, ten nelze nalézt a skončí to tak, že je vybraný prvek ListView znovu nastaven na null. Nyní již parser přečte i ItemsSource, ale to už je příliš pozdě na to, aby zachránil situaci.

Jediné správné pořadí, kdy dostaneme opravdu požadované výsledky a zbavíme se často nepochopitelných chyb je zapsáním ItemsSource před SelectedItem.

Zlo se skrývá v detailech.

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="">

*