wtorek, 17 lipca 2012

Jak napisać edytowalny ListBox?

Każdy programista prędzej czy później stanie przed koniecznością zmiany danych wyświetlonych w kontrolce "ListBox" lub "ListView". W internecie można znaleźć kilka dróg rozwikłania tego problemu, chciałbym przedstawić Wam, ten który przypadł mi do gustu :)

czwartek, 12 lipca 2012

Must create DependencySource on same Thread as the DependencyObject. Przeciwdziałanie!

Wiadomo, że aktualizowanie danych miedzy programem a bazą danych może zająć chwilę.
Aby użytkownik był świadom tego co się w danej chwili wykonuję dobrze jest wyświetlić wskaźnik postępu a operacje na danych wykonać w wątku pobocznym programu.
Podczas takich operacji otrzymałem błąd "Must create DependencySource on same Thread as the DependencyObject."

środa, 4 lipca 2012

Reflection - dostęp do właściwości klasy.

Spotkałem się ostatnio z koniecznością użycia właściwości z obiektów różnych typów, nie mających ze sobą nic wspólnego. Każdy z tych typów mógł posiadać właściwość "Synchronized" typu enum, w przypadku gdyby taka "property" istniała miałem pobrać jej wartość i po porównaniu z wartością wzorcową ustawić tą wartość na nową.
Do takich zadań możemy użyć funkcjonalności z "Reflection".

sobota, 30 czerwca 2012

RichTextBox jak przesłać dane?

Pisałem komunikator internetowy, wyświetlanie danych w programie tego typu powinno być efektowne. To znaczy, że powinno umożliwiać wyświetlanie różnego typu tekstów - pogrubionych, pochyłych, różnych wielkości, kolorów itd. Najwłaściwszą kontrolką do zadań tego typu jest według mnie RichTextBox.
Niestety nie umożliwia ona "bindowania" danych!!!

niedziela, 24 czerwca 2012

Codility - Closest ascenders - rozwiązanie.

Codility umożliwia dla programistów certyfikowanie samych siebie, czyli wchodzisz na stronę, rozwiązujesz podany problem i możesz szczycić się certyfikatem Codility... do czasu wystawienia następnego zadania :)
Poniżej chciałbym opisać sposób rozwiązania zadania polegającego na poszukiwaniu najbliższej większej wartości w tablicy intów (closest ascenders). Zadanie to zaliczyłbym do trudnych, ale pewnie tylko dlatego...

wtorek, 19 czerwca 2012

Moje boje z "Binding" - konwertery

Właściwość "Converter" podczas umożliwia nam przekształcenie powiązanych elementów na oczekiwaną wartość zwracaną przez "Binding".
Przykładowo "bindujemy" wartość a=2 a chcemy wyświetlić a*a, to jest właśnie zadanie dla konwertera!

piątek, 15 czerwca 2012

Jak sterować wyświetlaniem danych na widoku? Rozwiązaniem jest...

Kontynuując wątek "bindowania", chciałem wytłumaczyć w jaki sposób z klasy "ViewModel" przypisanej do DataContext możemy wpływać na zmianę na widoku.
Należy wyjaśnić tę kwestię gdyż jest ona bardzo istotna i będę jej używał podczas dalszego opisywania moich bojów z "Binding" :).
Cofnijmy się więc do definicji klasy "ViewModel'u".