Τα components (κυρίως controls αλλά και class libraries) αποτελούν χρήσιμα δομικά στοιχεία για την ανάπτυξη των WPF εφαρμογών. Η στάνταρ εργαλειοθήκη του Visual Studio περιλαμβάνει πολλά controls αλλά έχει και ελλείψεις. Για παράδειγμα, δεν υπάρχει ένα color picker για την επιλογή χρώματος ή ένα updown control για την βηματική αυξομείωση μίας τιμής. Παρακάτω, θα δείτε μία λίστα από components που έχω κατασκευάσει μαζί με πλήρες manual και sample project για το καθένα. Να σημειωθεί ότι αν δεν βλέπετε το περιεχόμενο του chm manual τότε από τις ιδιότητες του αρχείου κάντε Άρση αποκλεισμού.
Σημείωση
Όλα τα components απαιτούν το .NET Framework 4.0 και πάνω. Διατίθενται ελεύθερα για προσωπική ή/και για εμπορική χρήση με την άδεια Creative Commons Attribution-ShareAlike 4.0 International με την παράκληση να αναφέρεται το όνομα του δημιουργού.
Ένα σύνολο από 23 εξειδικευμένα TextBoxes που βοηθούν στην καταχώρηση δεδομένων συγκεκριμένου τύπου (π.χ. Ιnteger, Long κλπ). Περιλαμβάνει ενδεικτικά: ByteTextBox, NullableByteTextBox, ShortTextBox, NullableShortTextBox, NumericRangeTextBox, RequiredTextBox, DateTextBox
και άλλα.
Στην έκδοση v1.1 προστέθηκε ένα bindable ZRichTextBox
control.
Ένα σύνολο από 8 updown controls που βοηθούν στη βηματική αυξομείωση αριθμητικών και ημερομηνιακών δεδομένων συγκεκριμένου τύπου (π.χ. Ιnteger, Long κλπ). Περιλαμβάνει ενδεικτικά: ByteUpDown, ShortUpDown, IntegerUpDown, DatePickerUpDown
και άλλα.
2 color controls που βοηθούν στην επιλογή χρώματος. Περιλαμβάνει: ColorSwatchHTML16
που είναι ένα απλό color swatch και βασίζεται στο χρωματικό πρότυπο του HTML 3.2 και το ColorPicker
που είναι πιο σύνθετο και βασίζεται στο χρωματικό πρότυπο του Office 2007.
Ένα ICommand που μπορεί να χρησιμοποιηθεί σε μία MVVM εφαρμογή.
4 Data controls για την διαχείριση δεδομένων. Περιλαμβάνει: SortControl
: Μία φόρμα επιλογής κριτηρίων ταξινόμησης. CriteriaControl
: Μία φόρμα επιλογής κριτηρίων αναζήτησης και DataNavigator
: Παρόμοιο με το παλιό καλό Data control της VB6 για πλοήγηση σε ένα σύνολο εγγραφών/objects. Είναι αντίστοιχο με το DataNavigator που έχω κατασκευάσει για τη WinForms τεχνολογία αλλά με πλουσιότερα και πιο ευέλικτα χαρακτηριστικά συν ότι επιτρέπει εκτός από την πλοήγηση και την προσθήκη/διόρθωση/αποθήκευση/διαγραφή.
Στην έκδοση 1.1 προστέθηκε το FindXPress
: Μία φόρμα για τη γρήγορη αναζήτηση μίας τιμής κειμένου μέσα σε μία πηγή δεδομένων που περιέχει μοναδικές τιμές κειμένου.
Μία βιβλιοθήκη από 15 κλάσεις ValueConverter. Ως γνωστόν, τα ValueConverters χρησιμοποιούνται σε binding εκφράσεις για τη σύνδεση μίας τιμής μίας target ιδιότητας με μία τιμή μίας source ιδιότητας, διαφορετικού (συνήθως) τύπου. Είναι δηλαδή, κλάσεις μετατροπής τιμής και χρησιμοποιούνται εκτενώς σε data-centric εφαρμογές. Στην παρούσα έκδοση περιλαμβάνονται: BooleanReverseConverter, BooleanToBitConverter, BooleanToBrushConverter, BooleanToFontSizeConverter, BooleanToFontStyleConverter, BooleanToFontWeightConverter, BooleanToImageSourceConverter, BooleanToStringConverter, BooleanToVisibilityConverter.
Στην έκδοση 1.2 προστέθηκαν 4 νέες κλάσεις: DateNullableToStringConverter, DateNullableToCurrentDateConverter, ImageSourceToVisibilityConverter, ImageSourceToStringConverter.
Στην έκδοση 1.3 προστέθηκαν 2 νέες κλάσεις: NumberNullableToStringConverter, NumberAsNullableToStringConverter.
Περισσότερα δείτε στο manual καθώς και στο sample project.
Μία βιβλιοθήκη έτοιμων ρουτινών (utilities) με τη μορφή στατικών μεθόδων για εύκολη χρήση στον κώδικα. Είναι οργανωμένες σε 8 κατηγορίες: AnimationUtilities, DataUtilities, FileUtilities, FlowDocumentUtilities, ImageUtitlities, MeasureUtilities, SecurityUtilities, WindowUtilities.
Για παράδειγμα, στην κατηγορία AnimationUtilities
υπάρχουν μέθοδοι για να εφαρμόσουμε εφέ σε ένα Framework element. Περιέχονται, μεταξύ άλλων, FadeIn, FadeOut, MoveIn, ZoomIn
κ.ά. Ή στην κατηγορία SecurityUtilities
υπάρχει η μέθοδος GetMD5Hash
όπου παίρνουμε ένα MD5 hash key από ένα input string. Πολύ χρήσιμο για να κρυπτογραφήσουμε passwords και να ελέγξουμε την εγκυρότητα ενός password που πληκτρολογεί o χρήστης.
Στην έκδοση v1.1 προστέθηκαν δύο στατικές μέθοδοι στην κλάση WindowUtilities
: Η InputMessage
η οποία μπορεί να αντικαταστήσει πλήρως την Win32 InputBox και η ShowMessage
η οποία μπορεί να αντικαταστήσει πλήρως την Win32 MessageBox.Show(). Και οι δύο περιλαμβάνουν αρκετές υπερφορτωμένες εκδόσεις προσθέτοντας χαρακτηριστικά όπως styles, στρογγυλότητα γωνιών κ.α. που ταιριάζουν στη φιλοσοφία του WPF.
Στην έκδοση v1.2 δεν προστέθηκε κάτι νέο. Απλά έγιναν μερικές τροποποιήσεις σε ρουτίνες της κλάσης DataUtilities
.
Στην έκδοση v1.3 προστέθηκαν κάποιες μέθοδοι στην κλάση ImageUtilities
, όπως π.χ. η GetThumbnailImage
, η οποία επιστρέφει μία εικόνα μειωμένης ανάλυσης (και μεγέθους σε bytes) μέσω pixel decoding εξοικονομώντας μνήμη ιδιαίτερα για εικόνες μεγάλης ανάλυσης ή η GetImageBytes
, η οποία επιστρέφει ένα byte array με τα δεδομένα μίας εικόνας από αρχείο ή από ένα BitmapImage source.
Ένα control που βοηθάει στη δημιουργία πεδίων Σημειώσεων (Notes) σε μία φόρμα δεδομένων. Οι σημειώσεις αυτές μπορούν να αποθηκευτούν σε ένα πεδίο text/string μίας Βάσης Δεδομένων (σε μορφή xaml text). Επίσης, μπορεί να χρησιμοποιηθεί αυτόνομα σε ένα παράθυρο εισαγωγής απλού μορφοποιημένου κειμένου (και εισαγωγής εικόνων) παρέχοντας τη δυνατότητα για αποθήκευση σε αρχείο τύπου xaml package, rtf ή plain text.
Περισσότερα δείτε στο manual καθώς και στο sample project.
Μία βιβλιοθήκη από controls που σχετίζονται με παρουσίαση/διαχείριση εικόνων. Προς το παρόν, περιέχει ένα SlideShow
control για την διαδοχική εμφάνιση (με ή χωρίς εφέ) εικόνων. Η διαδοχή μπορεί να γίνει αυτόματα (auto-play slideshow) ή/και με την παρέμβαση του χρήστη με κουμπιά μπρος-πίσω.
Πολλές ρυθμίσεις μπορούν να γίνουν, όπως για παράδειγμα: εμφάνιση λεζάντας, επιλογή εφέ, διάρκεια εφέ, διάρκεια παραμονής της κάθε εικόνας (για το auto-play slideshow), εμφάνιση ή όχι in-space buttons previous/next (δηλαδή, buttons για την πλοήγηση μπρος-πίσω, μέσα στον χώρο της εικόνας όπως συμβαίνει σε αρκετές περιπτώσεις στα slideshows στο web), κ.α.
Μία βιβλιοθήκη από controls διαχείρισης χρόνου. Προς το παρόν, περιέχει ένα Chronometer
control, το οποίο αποτελεί ένα εξειδικευμένο TextBlock που εμφανίζει ένα χρονόμετρο αντίστροφης μέτρησης (countdown timer), σε μορφή hh:mm:ss. Θα φανεί χρήσιμο στη δημιουργία εκπαιδευτικών εφαρμογών, quizzes κλπ.
Μία βιβλιοθήκη από button controls. Προς το παρόν, περιέχει ένα ImageButton
control που αφορά ένα button που περιλαμβάνει εικόνα και κείμενο.
Μπορούμε να προσαρμόσουμε το ImageButton ώστε να τοποθετήσουμε την εικόνα αριστερά, πάνω, δεξιά ή κάτω από το κείμενο, να θέσουμε το μέγεθός της, την απόσταση μεταξύ αυτής και του κειμένου, την στρογγυλότητα των άκρων (εμμέσως δημιουργείται ένα στρογγυλό button!), το κείμενο του button. Επίσης, μπορούμε να θέσουμε να εμφανίζεται μόνο η εικόνα ή μόνο το κείμενο ή και τα δύο. Τα υπόλοιπα χαρακτηριστικά προέρχονται από την πατρική κλάση Button.
Μία βιβλιοθήκη από controls σχετικά με εμφάνιση (layout) δεδομένων. Προς το παρόν, περιέχει ένα CardBox
control, το οποίο αποτελεί ένα εξειδικευμένο ListBox που εμφανίζει τα δεδομένα σε μορφή κάρτας.