Dobrze jest znać podstawowe różnice pomiędzy ListBox, ComboBox, CheckBox, RadioButton oraz Label w XAML. W tym oknie dialogowym widać wyraźnie, że po lewej stronie użytkownik ma możliwość wyboru gatunku zwierzęcia spośród kilku opcji wyświetlonych jednocześnie. Takie zadanie najlepiej spełnia ListBox, bo umożliwia wygodną selekcję z widocznej listy. U góry po prawej jest pole tekstowe do wpisania imienia zwierzaka, więc TextBox jak najbardziej pasuje. Poniżej mamy dwa pola wyboru – „Zaszczepiony?” i „Na diecie?” – to są typowe przypadki na CheckBoxy: można zaznaczyć dowolne lub oba naraz. Kluczowe jest to, że CheckBox pozwala użytkownikowi wybrać dowolną kombinację, a nie tylko jedną opcję jak RadioButton. Z mojego doświadczenia często początkujący mylą ComboBox z ListBoxem, ale tu akurat lista jest zawsze widoczna, co jest typowe dla ListBoxa. Stosowanie CheckBoxów dla takich dwustanowych opcji też jest zgodne z dobrymi praktykami UX i standardami opisu formularzy w XAML. W pracy zawodowej często się to wykorzystuje, bo kod jest czytelny i łatwo go rozszerzać. Właśnie taki zestaw – ListBox, TextBox, CheckBox – jest najbardziej przejrzysty i zgodny z zamysłem projektanta interfejsów. Fajnie jest to zapamiętać, bo ta kombinacja pojawia się w wielu firmowych projektach.
Różnorodność kontrolek XAML często prowadzi do nieporozumień, szczególnie gdy trzeba wybrać właściwe narzędzie do konkretnego zadania. W powyższym oknie dialogowym decyzja, czy użyć ListBox, ComboBox, RadioButton czy CheckBox, opiera się na tym, jak użytkownik powinien wchodzić w interakcję z danym elementem. Częstym błędem jest użycie ComboBoxa zamiast ListBoxa, podczas gdy użytkownik musi mieć wgląd w pełną listę dostępnych opcji i możliwość wyboru tylko jednej – ComboBox ukrywa opcje i wymaga dodatkowego kliknięcia, co w tym przypadku byłoby mniej wygodne. Równie częsty jest wybór RadioButtonów dla pytań o wiele odpowiedzi typu „tak/nie”, jednak RadioButtony służą do wyboru tylko jednej opcji z grupy wzajemnie wykluczających się odpowiedzi, a nie do niezależnych odpowiedzi, które można zaznaczyć równocześnie – tutaj lepiej sprawdzą się CheckBoxy, które umożliwiają wielokrotny wybór. Użycie Label zamiast TextBoxa do wprowadzania imienia zwierzaka mija się z celem, bo Label wyłącznie wyświetla tekst i nie pozwala użytkownikowi na edycję danych. W praktyce spotykam się z tym, że osoby uczące się XAML próbują uprościć kod przez zamianę kontrolek na inne podobne, jednak prowadzi to do złych doświadczeń użytkownika i łamie podstawowe zasady projektowania interfejsów, gdzie czytelność i intuicyjność są kluczowe. Trzeba zawsze brać pod uwagę funkcjonalność danej kontrolki i dopasowywać ją do oczekiwanego zachowania aplikacji, zgodnie z dobrymi praktykami i wytycznymi dla interfejsów użytkownika.