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 :)
wtorek, 17 lipca 2012
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."
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".
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!!!
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...
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!
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".
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".
Etykiety:
Binding,
C#,
event,
Expression,
GetPropertyName,
INotifyPropertyChanged,
lock,
ObservableCollection,
PropertyChangedEventHandler,
thread safe,
ViewModel,
WPF
poniedziałek, 11 czerwca 2012
Moje boje z "Binding" - źródła danych
Dziś mam zamiar opisać kolejne sposoby użycia "Binding"
Docelowo chciałbym opisać konkretne implementacje rozwiązań, których nie znajdziecie w dokumentacji, ale doszedłem do wniosku, że zanim przejdę do bardziej skomplikowanych rzeczy należałoby przedstawić podstawy.
Docelowo chciałbym opisać konkretne implementacje rozwiązań, których nie znajdziecie w dokumentacji, ale doszedłem do wniosku, że zanim przejdę do bardziej skomplikowanych rzeczy należałoby przedstawić podstawy.
czwartek, 7 czerwca 2012
Moje boje z "Binding" - The Beginning
Po latach pisania w MFC i WinForms nareszcie zacząłem pisać aplikację w WPF i Xaml'u.
Bardzo mi się spodobała właściwość "Content", która pozwala wewnątrz jednego elementu zawrzeć inny element lub grupę elementów.
Podoba mi się możliwość definiowania wyglądu za pomocą języka xaml.
Powoli staję się też wielkim fanem tego co na początku stwarzało mi największe problemy... klasy "Binding".
Umożliwia on połączenie danych bezpośrednio z elementem gui, odpowiadającym za ich prezentację użytkownikowi.
Bardzo mi się spodobała właściwość "Content", która pozwala wewnątrz jednego elementu zawrzeć inny element lub grupę elementów.
Podoba mi się możliwość definiowania wyglądu za pomocą języka xaml.
Powoli staję się też wielkim fanem tego co na początku stwarzało mi największe problemy... klasy "Binding".
Umożliwia on połączenie danych bezpośrednio z elementem gui, odpowiadającym za ich prezentację użytkownikowi.
wtorek, 5 czerwca 2012
Zadanie 2 - szukanie najbliższych wartości
Dane są tablice A i B o tej samej długości.
Znajdź najmniejszą, bezwzględną wartość różnicy A[i] - B[j], czyli
Znajdź najmniejszą, bezwzględną wartość różnicy A[i] - B[j], czyli
Min(Abs(A[i] - B[j]))Oczywiście najlepsza złożoność algorytmu jak najniższa :)
Referencje do bibliotek kompilowanych na różne platformy (x86 i x64) .
Pracowałem nad dość dużą aplikacją, składającą się z wielu projektów zależnych od siebie.
Aplikacja była kompilowana na platformę "x86" i pięknie działała na wszystkich systemach z rodziny Windows.
Zapytacie dlaczego "x86" a nie "Any CPU"? Aplikacja komunikowała się z inną przez COM.
I to nas zgubiło :)
Aplikacja była kompilowana na platformę "x86" i pięknie działała na wszystkich systemach z rodziny Windows.
Zapytacie dlaczego "x86" a nie "Any CPU"? Aplikacja komunikowała się z inną przez COM.
I to nas zgubiło :)
piątek, 1 czerwca 2012
Zadanie 1 z Codility - rozwiązanie
Kolejny problem rodem z codility zdefiniowany jest następująco.
Parametrami wejściowymi są tablica liczb całkowitych A o raz liczba całkowita K.
Należy obliczyć ilość par liczb uzupełniających się.
Para liczb (i,j) uzupełnia się gdy spełniają one warunek
Parametrami wejściowymi są tablica liczb całkowitych A o raz liczba całkowita K.
Należy obliczyć ilość par liczb uzupełniających się.
Para liczb (i,j) uzupełnia się gdy spełniają one warunek
A[i] + A[j] = KMaksymalna złożoność algorytmu to O(n) - czyli liniowa!
Codility - sprawdzanie wiedzy programistów
Portal codility.com zajmuje się testowaniem umiejętności programistów. Pierwszy raz spotkałem się z nim w artykule "Codility wygrało!" opisującym wygraną polskich (!!!) twórców serwisu Codility w konkursie TechCrunch Europe.
Sam idea sprawdzania wiedzy programistów poprzez serwis bardzo mi się spodobała.
Sam idea sprawdzania wiedzy programistów poprzez serwis bardzo mi się spodobała.
Requested Clipboard operation did not succeed. Jak temu zapobiec?
Zdarza się, że podczas wpisywania danych do schowka za pomocą klasy Clipboard otrzymamy wyjątek "Requested Clipboard operation did not succeed."
czwartek, 31 maja 2012
Jak uniknąć III wojny światowej... czyli operacje na plikach.
Zdarza się podczas zapisu/odczytu danych z pliku zamiast pożądanego efektu otrzymujemy wyjątek IOException. Spowodowane jest to próbą równoległego wykonania operacji na tym samym pliku przez różne instancję programu.
środa, 30 maja 2012
3... 2... 1... Lecimy!!!
Witam wszystkich potencjalnych "czytaczy" mojego bloga.
Plan zaistnienia w przestrzeni internetowej prześladował mnie od dłuższego czasu, zgodnie z zasadą - "Jak Cie nie ma w internecie to nie istniejesz"... a jako, że granicę dzielącą młodość od wieku średniego już przekroczyłem, więc doszedłem do wniosku, że czas już ZAISTNIEĆ.
Od wielu lat zajmuję się pisaniem programów, więc naturalnym porządkiem rzeczy będę umieszczał na tym blogu rozwiązania problemów, które napotkałem podczas pracy lub subiektywne opinie na tematy około programistyczne.
Mogę mieć tylko nadzieję, że nie będę jedyną osobą zaglądającą na tego bloga, a moje pomysły wydają się Wam pomocne i interesujące.
Tak więc żeby nie lać już wody... 3... 2... 1... Lecimy!!!
Plan zaistnienia w przestrzeni internetowej prześladował mnie od dłuższego czasu, zgodnie z zasadą - "Jak Cie nie ma w internecie to nie istniejesz"... a jako, że granicę dzielącą młodość od wieku średniego już przekroczyłem, więc doszedłem do wniosku, że czas już ZAISTNIEĆ.
Od wielu lat zajmuję się pisaniem programów, więc naturalnym porządkiem rzeczy będę umieszczał na tym blogu rozwiązania problemów, które napotkałem podczas pracy lub subiektywne opinie na tematy około programistyczne.
Mogę mieć tylko nadzieję, że nie będę jedyną osobą zaglądającą na tego bloga, a moje pomysły wydają się Wam pomocne i interesujące.
Tak więc żeby nie lać już wody... 3... 2... 1... Lecimy!!!
Subskrybuj:
Komentarze (Atom)