ComboBox C# WPF – Add Items, Text oraz Value

Poniższy wpis dotyczy dodawania wierszy do kontrolki ComboBox w WPF. Przedstawione przykłady odnoszą się do kontrolki o nazwie „comboPerson”.

 

 

Dodawanie rekordu do ComboBox C# WPF

Dodawanie kolejnego wiersza w ComboBox’ie realizowane jest za pomocą funkcja Items.Add(); Jako argument należy podać nowy obiekt (Item), który może być po prostu String’iem.

 

A więc komenda comboPerson.Items.Add(„Napis”); spowoduje dopisanie nowego wiersza o wartości „Napis” do kontrolki o nazwie „comboPerson”. Uzupełnienie listy można więc zrealizować poprzez komendy:

 

 

Dodawanie rekordów w pętli

Oczywiście ręczne wpisywanie każdego elementu byłoby czasochłonne i uciążliwe, dlatego warto wykorzystać do tego zadania pętlę.

 

Przed przystąpieniem do uzupełniania danych można wyczyścić istniejące już wpisy, ma to znaczenie gdy dane odczytywane są np. z bazy danych i mogły ulec zmianie od poprzedniej operacji wczytywania – służy do tego funkcja Items.Clear().

 

Po uzupełnieniu ComboBox’a danymi chcielibyśmy by pojawiły się one w uruchomionym programie. Jeśli lista uległa zmianie to należy ją odświeżyć funkcją Refresh(), w przeciwnym wypadku użytkownik programu nie zobaczy zmian.

 

 

W powyższej pętli skorzystano z czytnika informacji z bazy danych, nazwanego tu „readPersons”, który w każdej iteracji pętli zwraca wartość string z kolumny nr 1 czytanej tabeli. Przedstawiony fragment kodu pozwolił na uzupełnienie ComboBox’a wszystkimi wartościami kolumny z wybranej tabeli.

 

Dodawanie rekordów z dwoma kolumnami

A co jeśli poza wartościami, interesują nas także indeksy (lub inny klucz główny) wybranej tabeli? Wtedy należy uzupełnić ją tymi informacjami, a wyświetlać tylko te elementy, które powinien zobaczyć użytkownik.

 

Do realizacji tego celu można wykorzystać klasę Dictionary, jest ona klasą kolekcji pozwalającą dodawać elementy do listy wraz z ich kluczami. Znajduje się ona w przestrzeni nazw System.Collections.Generic.

W deklaracji należy podać typ wprowadzanych danych np. Dictionary<int, string>, co oznacza, że w każdym wierszu pierwszy element będzie typu int, a drugi typu string. Oba elementy są zapisywane jako dwie kolumny o nazwach „Key” oraz „Value” i w ten sposób można się do nich odwoływać.
Różnica w kodzie polega na tym, że w pętli nie uzupełniamy nowymi rekordami ComboBox’a, ale właśnie kolekcję Dictionary i ostatecznie przypisujemy ją do ItemsSource ComboBox’a. Funkcja Clear() w takim przypadku spowoduje błąd, więc należy najpierw usunąć wartości z ItemsSource przez przyrównanie do null.

 

Poniższy kod przedstawia rozwinięcie poprzedniego przykładu.

 

 

Wybór kolumny, która zostanie wyświetlona na liście odbywa się za pomocą komendy comboPerson.DisplayMemberPath = „Value”; Ponieważ do ComboBox’a została przypisana kolejka Dictionary to do wyboru są tu tylko dwie kolumny o przedstawionych wcześniej nazwach „Key” oraz „Value”.

 

Odczyt wybranych wartości w ComboBox’ie

Gdy kontrolki zostały uzupełnione danymi to pozostaje już tylko odczyt wartości wybieranych przez użytkowników. Przykłady będą rzutowane na string by można je było wyświetlić np. w MessageBox’ie.

 

Odczytanie pełnego wiersza:

combobox c# wpf
[2, Jan]
Wyświetli w nawiasie kwadratowym liczbę reprezentującą indeks i wartość string.

 

Do wyświetlenia wartości kolumny Key lub Value należy rzutować wybrany element ComboBox’a (SelectedItem) na KeyValuePair znajdujący się w przestrzeni nazw System.Collections.Generic co pozwoli na dostęp do pola:

Key

 

Value

Loading Facebook Comments ...

Dodaj komentarz

Or