Είμαι εργάζονται για μια εφαρμογή των windows κατάστημα και ένα από τα πράγματα που θέλω να κάνω στο app είναι να εμφανίσει ένα αρχείο καταγραφής που δείχνει μηνύματα κατάστασης και άλλο ενημερωτικό μεζέδες όπως την εργασία του χρήστη πράγματα. Για το σκοπό αυτό, Πρόσθεσα ένα πλαίσιο λίστας ως εξής:
<Πλαίσιο λίστας x:Όνομα ="GameStateLog" HorizontalAlignment ="Κέντρο" Ύψος ="221" VerticalAlignment ="Κορυφή" Πλάτος ="499" Αναπλήρωση ="0" FontSize ="10">
Ο κώδικας C# για τη συμπλήρωση του πλαισίου λίστας κατά το χρόνο εκτέλεσης που ήταν προς την κατεύθυνση της:
GameStateLog.Items.Insert(0, GameStateCounter + ": Νέο παιχνίδι κατάσταση: αναμονή για παίκτη 1 Όνομα");
Αυτό λειτούργησε πρόστιμο αρκετά αλλά το UI έδειξε ένα τρελό ποσό των padding γύρω από τα μεμονωμένα μηνύματα όπως προστέθηκαν. Αυτός έχει νόημα, αν θέλουν να είναι σε θέση να επιλέξετε αυτά τα στοιχεία από τους τελικούς χρήστες, αλλά δεν έχει νόημα όταν απλά θέλετε να δείχνει μια τρέχοντας σειρά των μηνυμάτων ημερολογίου-χρήστες δεν θα επιλέξετε αυτά τα, Μόλις τα δείτε. Ήταν παράξενα δύσκολο να βρει έναν εύκολο τρόπο για να γίνει αυτό και αναμφισβήτητα, ο τρόπος που το βρήκα δεν είναι απαραιτήτως "εύκολο" αλλά εγώ το πήρα ηλικία εργασίας OK. Η βασική αντίληψη προήλθε από αυτήν την καταχώρηση Εδώ (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) από Bob Relyea. Αντί για τη συλλογή στοιχείων σχετικά με το πλαίσιο λίστας adding συμβολοσειρές, Προσθήκη ListBoxItems. Προσθέτοντας μια συμβολοσειρά, το πλαίσιο λίστας δημιουργώντας το δικό του ListBoxItem από μόνη της. Ήμουν σε θέση να επηρεάζει τίποτα σχετικά με ListBoxItem ότι μετά από το γεγονός. Ο νέος κώδικας είναι:
ιδιωτική άκυρη AddGameStateLogMessage(συμβολοσειρά theMessage) { ListBoxItem li = νέα ListBoxItem(); Li.Περιεχομένου = theMessage; Li.MaxHeight = 25; Πάχος thisPadding = νέα Πάχος(5, 0, 5, 0); Li.Αναπλήρωση = thisPadding; GameStateLog.Items.Insert(0,Li); }
Εδώ τη δημιουργία του ListBoxItem και την εισαγωγή τους. Θα αφαιρεθεί το περιττό υλικό παραγεμίσματος ορίζοντας το πάχος.
Αυτό είναι αρκετά ευέλικτη, όπως σκοπεύω να κάνω κάποια χρωματική κωδικοποίηση για να επισημάνει συγκεκριμένους τύπους μηνυμάτων και προσθέτοντας άμεσα ListBoxItems έχω να τους στυλ οιονδήποτε τρόπο που θέλω.
Ελπίδα αυτό βοηθά κάποιος!
</Τέλος>
Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin