Blog Null Reference Exception - kategorie Komponenty
Při nastavování focusu se Silverlight ListBox kontrol defaultně chová tak, že je focus nastaven na první (případně poslední pří Shift+Tab) prvek. Tento “divný” stav je zobrazen na obrázku. Já bych toto chování označil spíše přímo jako bug než vlastnost, očekávané chování je samozřejmě nastavit focus na označený prvek v ListBoxu (tak jako ve WPF). Horší chování pak ještě nastává v případě, že ListBox je naplněn více prvky a je v něm tedy vertikální posuvník.
Pokud se v Silverlight koukneme na kontrol TextBox, zjistíme, že již obsahuje vlastnost Watermark, ta je však bohužel implementována takto:
throw new NotImplementedException();
Pojďme to udělat lépe.
Systém Windows XP již před nějakou dobou přinesl zobrazení standardních ovládacích prvků pomoci stylů - Visual Styles a možnost přepínání způsobu zobrazení pomoci grafických témat – Desktop themes. Ve Windows Vista bylo zavedeno zobrazení Aero Glass a s tím vznikl i nový grafický styl kontrolů, který zůstal i v následujících Windows 7. Nyní Microsoft ve Windows 8 opouští Aero styl a přináší na desktop design, který se více blíží tabletovému rozhraní Metro. Jsou zde hned dvě nová zobrazení: Aero 2 výchozí pro Windows 8 a AeroLite výchozí ve Windows Server 2012.
Pokud používáme v Silverlight aplikaci kontrol AutoCompleteBox plněný větším množství prvků (např. nad 1000), setkáme se s výkonnostním problémem, kdy první zobrazení dropdown seznamu je velice pomalé. Toto můžeme spravit jednoduchou úpravou ControlTemplate tohoto kontrolu.
Pokud dynamicky měníte velikost buňky v Silverlight DataGrid kontrolu, narazíte na problém, že výška řádku data gridu se podle potřeby správně zvětšuje, ale už se zpátky nezmenšuje.