Μηνιαία Αρχεία: Απριλίου 2013

Γρήγορη και εύκολη: Μετακινήσετε ένα ορθογώνιο παραλληλόγραμμο με C# σε ένα App κατάστημα Windows

Συνολική blog φιλοσοφία μου είναι ότι είναι απολύτως εντάξει για να blog σχετικά με το παλιό, εγκαταστάθηκαν θέματα που έχουν καλυφθεί στο θάνατο αλλού.  Υποθέτω ότι αυτό το θέμα είναι ένας από εκείνους, αλλά είμαι blogging αυτό ούτως ή άλλως.

Έχω εργαστεί σε παράθυρο κατάστημα app και είμαι στο τμήμα όπου πρέπει να κάνω κάποια Εμψύχωση.  Για το σκοπό αυτό, Έχω υπολογίζοντας bits και κομμάτια των windows αποθηκεύουν app animation που, όπως βγάζει, είναι αρκετά κοντά στο, αλλά δεν είναι ακριβώς όπως, Κινούμενα σχέδια XAML που βασίζεται στο .NET (Είμαι ακόμα έρχονται να αντιμετωπίσουμε το γεγονός ότι WinRT <> .NET 🙂 ).

Σήμερα το πρωί θα ήθελα να πάρετε μια λαβή για drag and drop ενέργειες.  Καθ οδόν προς που, Πήρε κολλάμε κινείται ένα ορθογώνιο αντί :).  Εδώ είναι ο κώδικας που κινείται ένα ορθογώνιο, όταν ο χρήστης κάνει κλικ στο κουμπί:

   1:   
   2:              MatrixTransform ct = (MatrixTransform)rectBig.RenderTransform;
   3:              Μήτρα m = ct.Μήτρα;
   4:              m.OffsetX  = 10;
   5:              m.OffsetY  = 10;
   6:              CT.Μήτρα = m;
   7:              rectBig.RenderTransform = ct;

Το κόλπο εδώ είναι ότι δεν μπορεί να αλλάξει άμεσα OffsetX ή OffsetY.  Μπορεί να υπάρξει μια πιο έξυπνος τρόπος να γίνει αυτό (και αν γνωρίζετε και αισθάνομαι σαν, Παρακαλώ μετά στα σχόλια). 

Για να γίνει αυτό, Θα πρέπει να:

1. Πάρει την MatrixTransform του ορθογωνίου (με χύτευση RenderTransform).

2. Πάρει τη μήτρα του ότι ο τύπος.

3. Αλλάξετε τη μήτρα του αντισταθμιστικά οφέλη.

4. Εκ νέου εκχώρηση πίνακα πίσω να το MatrixTransform.

5. Εκ νέου εκχώρηση το MatrixTransform πίσω να το ορθογώνιο.

Να το δοκιμάσετε, Έβαλα ένα ορθογώνιο και κουμπί στην οθόνη. Όταν κάνω κλικ στο κουμπί, η παραπάνω λογική να εκτελεί και να κινείται το ορθογώνιο αμέσως.

Κάποια στιγμή, Θα ήθελα να εμψυχώσει αυτό αλλά δεν έχω καμία ιδέα για το πώς να πάρετε μια DoubleAnimation να δουλέψω (Storyboard.SetTargetProperty() είναι ένα μυστήριο για μένα σχετικά με αυτό για την ώρα είναι).

</Τέλος>

undefinedΕγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Καθορισμό του ύψους της ListboxItems σε ένα πλαίσιο λίστας μέσω προγραμματισμού για το App κατάστημα Windows

Είμαι εργάζονται για μια εφαρμογή των 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 έχω να τους στυλ οιονδήποτε τρόπο που θέλω.

Ελπίδα αυτό βοηθά κάποιος!

</Τέλος>

undefinedΕγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin