Większość aplikacji w jakich tworzeniu uczestniczyłem była aplikacjami webowymi. Postanowiłem zmierzyć się z innym zadaniem – aplikacją desktopową, która oparta będzie o dostępne w .NET mechanizmy. Nie jest to komercyjny projekt a poligon testowy polegający na określeniu architektury, zaprojektowaniu systemu i jego implemenacji. Wiadomo – teoria teorią, jednak dopiero zderzenie się w praktyce z poruszanymi zagadnieniami pozwala na nauczenie się czegokolwiek zdecydowanie skuteczniej. Tyle tytułem nudnego...
W poprzednich wpisach opisane zostały zagadnienia związane z rysowaniem linii w scenach 3D oraz wymienione zostały pewne gotowe rozwiązania pozwalające takie linie rysować. Zastanówmy się jednak chwile i pomyślmy nad rozwiązaniami alternatywnymi, przecież scena 3D wyświetlona na płaskim ekranie jest tylko pewnego rodzaju projekcją trójwymiarowej przestrzeni na płaszczyznę, więc dlaczego nie rysować zwykłych linii bezpośrednio na tej płaszczyźnie? Niniejszy wpis poza prezentacją różnych i niezależnych od ...
W poprzednim artykule opisane zostały zagadnienia związane z rysowaniem linii w scenie 3D opartej o WPF. W tym artykule zostaną opisane gotowe rozwiązania umożliwiające kreślenie linii.
Jednym z problemów, na jakie może napotkać programista tworzący trójwymiarową scenę przy pomocy WPF 3D, jest rysowanie linii. W tym artykule zostanie opisane, dlaczego taki problem może zaistnieć i jak go można rozwiązać.
Na temat transformacji w WPF 3D pojawiło się wcześniej już trochę informacji (m.in. „czym są transformacje i do czego je można wykorzystać?”, czy „jak transformacje tworzyć i komponować?”), zabrakło jednak informacji, jak transformacje wykorzystać do obliczeń 3D. Niniejszy wpis poza prezentacją różnych i niezależnych od konkretnego wykorzystania treści stanowi również opis pewnych zagadnień związanych z projektem Mesh Diagram 3D.Informacje dotyczące projektu oznaczone są etykietą MeshDiagram3D. Przeanali...
Czasem zachodzi potrzeba, by element sceny 3D wiedział o swojej obecności w scenie, np. w celu odpowiedniego obrócenia się, by być przodem do kamery. Oczywiście przy jego dodawaniu do sceny można by było przekazać do niego odpowiednie informacje o scenie, ale okazuje się, że każdy element sceny może sam uzyskać odpowiednie informacje, gdyż wszystkie elementy sceny 3D w WPF (i nie tylko sceny 3D) tworzą drzewo wizualne (visual tree). Niniejszy wpis poza prezentacją różnych i niezależnych od konkretnego wy...
Praca z danymi może kojarzyć się z wykonywaniem operacji na danych, lecz nie tylko. Ważnym elementem jest prezentacja, w której wykonaniu pomocnymi mechanizmami są wiązanie,walidacja i konwersja danych. Z tego artykułu nauczysz się, jak wykorzystywać Data Binding w swoich projektach.Data BindingCzym jest Data Binding? Binding umożliwia zarówno połączenie elementów interfejsu użytkownika z dużymi i często używanymi obiektami biznesowymi, jak i powiązani...
Jedną z funkcjonalności Chupacabry będzie możliwość przeglądania zdjęć znajdujących się na dysku i aby to osiągnąć konieczny jest mechanizm nawigowania pomiędzy katalogami. Oczywiście można znaleźć gotowe rozwiązania zaimplementowane przez kogoś, gotowe do wykorzystania w WPF'ie, ale pomyślałem, że stworzenie takiej kontrolki samemu będzie dobrym sprawdzianem oraz ćwiczeniem z wykorzystania samego WPF'a jak i MVVM Light Toolkit w praktyce. Od razu napiszę, że nie wymyśliłem samemu jak to ładnie połączyć,...
Autor: Jako, że nadal nie mam czasu na pisanie nowych postów (tematów trochę jest - czasu mniej :(), postanowiłem udostępnić coś co kiedyś zostało nagrane, a jakoś nie zostało przedstawione szerszej publiczności. Poniżej linki do trzech moich (AttachedProperties oraz Style - już był publikowany na blogu, ale na innym serwerze) filmów umieszczonych na Cyber-Flick odnośnie WPF'a. W zamyśle, miał powstać cały cykl filmów o WPF - na razie jest tylko tyle. Jak będzie pozytywny oddźwięk to może powrócę do pon...
Autor: Znalazłem ostatnio świetną bibliotekę ułatwiającą tworzenie aplikacji w WPF na urządzenia wielodotykowe – Surface Toolkit for Windows Touch. Jest to zbiór kontrolek znanych z Microsoft Surface przystosowanychdo korzystania z Windows Touch (Surface korzysta z Visty jako systemu operacyjnego, WM_TOUCH pojawił się dopiero w Windows 7). W skład tej biblioteki wchodzą:LibraryBar – kontener wyświetlaj...
Autor: Podczas ostatnich prac z WPF'em napotykałem na strasznie irytujące sytuacje kiedy po uruchomieniu aplikacji wraz z debuggerem otrzymywałem nic nie mówiące mi komunikaty. Dla przykładu: An unhandled exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll Additional information: 'Add value to collection of type 'System.Windows.Controls.UIElementCollection' threw an exception.' Line number '6' and line position '10'.
W poprzedniej części zacząłem pisać o przekształceniach i transformatach, w tym wpisie pokazane zostaną przykłady jak można wykorzystać transformaty do poruszania kamerą. Okazuje się, że przekształcanie (w tym obracanie, przesuwanie) wszystkich elementów w scenie może być niewygodne i nieopłacalne (np. ze względów wydajnościowych), dlatego czasem lepiej będzie wykonać przekształcenie dla samej kamery.
Przy prezentacji grafiki 3D ciekawą funkcjonalnością może być umożliwienie użytkownikowi oglądanie sceny 3D z wielu punktów widzenia, obracania elementów sceny itp... W tym wpisie zaprezentowane zostanie jak można taką funkcjonalność stworzyć w WPF 3D. Niniejszy wpis poza prezentacją różnych i niezależnych od konkretnego wykorzystania treści stanowi również opis pewnych zagadnień związanych z projektem Mesh Diagram 3D.Informacje dotyczące projektu oznaczone są etykietą MeshDiagram3D. Efekt oglądania sc...
W poprzedniej części serii poświęconej tematyce WPF 3D, opisane zostały rodzaje materiałów, jakimi można pokrywać figury i bryły w tworzonej scenie 3D, pominięte ciszą zostały natomiast pędzle wykorzystywane do przygotowania odpowiedniego materiału. W tym wpisie wiadomości dotyczące pokrycia figur zostaną uzupełnione i omówione zostaną pędzle, które są elementem wykorzystanego materiału. Wykorzystanie pędzla jest konieczne do przygotowania materiału dla wybranej figury lub bryły w scenie. W odróżnieniu j...
Konwertery to bardzo przydatny mechanizm WPF'a pozwalający, w czasie procesu bindowania, na konwersję pomiędzy różnymi typami wartości. Wcześniej czy później przyjdzie taki monent, że będziemy musieli/chcieli napisać swój własny konwerter. Możemy zrobić to na kilka sposobów. Poniżej postaram się przybliżyć rózne sposoby implementacji konwertera z ich zaletami i wadami. Jako przykład w poniższych rozważaniach posłuży DateConverter z MSDN'a. Podejście pierwsze (StaticResource)Realizacja konwertera polega ...
Pliki .chm to prosty sposób na help do programu, dodatkowo polecono mi programik Precision Helper (freeware), który ułatwia tworzenie dokumentacji. Niestety WPF nie ma wbudowanego mechanizmu do obsługi tych plików. Oczywiście można posiłkować się klasą Help z biblioteki System.Windows.Forms. Pozostaje tylko pytanie czy warto dołączać dużą (ok 5MB) bibliotekę, aby skorzystać z jednej klasy. Moim zdaniem nie warto. Postanowiłem napisać moduł, który zajmie się obsługą plików *.chm w WPF. Po kilku godzinach...
Niektóre aplikacje warto wyposażyć w Splash Screen. W przypadku WPF-a (który jest wykorzystywany w DesktopInfo) sprawa jest banalnie prosta. Wystarczy dodać plik png do projektu a następnie we właściwościach pliku wybrać SplashScreen
Korzystanie z interfejsu INotifyPropertyChanged podczas pracy z WPF to praktycznie codzienność. Za którymś razem jednak implementacja tego interfejsu w kolejnej klasie może już zbrzydnąć. Dlaczego, więc nie skorzystać z refleksji i extensions methods? Metodę wywołującą zdarzenie PropertyChanged napiszemy raz i będziemy z niej korzystać do woli. Implementacja tej metody w moim wykonaniu wyglą...
Standardowo gdy tworzymy projekt typu Class library, Visual Studio pozwala nam na dodanie elementów WinForm i dosłownie jednego (User Control) elementu z palety WPF. Oczywiście dla bibliotek z elementami WPF przeznaczony jest projekt WPF Custom Cortol Library, ale czasem istnieje konieczność dodania kontrolek WPF'owych do istniejącej biblioteki i właśnie taki przypadek zostanie tutaj rozpatrzony.
Instalacja MVVM Light Toolkit Właściwie jedyne co jest niezbędne do pracy z MVVM LT, to same biblioteki w formie plików DLL, jednak aby naprawdę wygodnie korzystać z tego narzędzia dobrze jest skorzystać z małych wspomagaczy przygotowanych przez autora. Pobieramy paczkę stąd i następnie wypakowujemy to co nam potrzeba. Jest tego całkiem sporo, ponieważ przygotowane są wersje zależne od wykorzystywanej technologii i oprogramowania: binarki - biblioteki w postaci plików DLL w postaciach przygotowanych dla...
Architektura 5173 dni, 20 godzin, 14 minut temu 417 źrodło rozwiń