Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Μετάβαση σε συγκεριμένο item ενός listview (datacontext)

Îåêßíçóå áðü ôï ìÝëïò tarasiadis. Τελευταία δημοσίευση από το μέλος tarasiadis στις 05-10-2009, 14:52. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-10-2009, 13:11 54240

    Μετάβαση σε συγκεριμένο item ενός listview (datacontext)

    Έχω μία φόρμα (WPF) που παίρνει δεδομένα μέσω databinding Από ένα datacontext.
    Έχω χρησιμοποιήσει κλάσεις για την πλοήγηση σε επόμενη, προηγούμενη, πρώτη και τελευταία εγγραφή.
    πχ this.TaskView.MoveCurrentToFirst();

    Τώρα αυτό που θέλω είναι να μπορώ να μεταβώ σε συγκεκριμένη εγγραφή. Το έχω καταφέρει μέσω του
    this.TaskView.MoveCurrentToPosition(60);

    Ωστόσο εγώ θέλω να μεταβώ στο task που έχει ID 60 και όχι σε αυτό που είναι στη θέση 60. Σκέφτηκα αν πρέπει να ορίσω την αρίθμηση του Index του datacontext με βάση το id. Αλλά είναι σωστό αυτό; Τι άλλο μπορώ να κάνω;

    Ευχαριστώ.
  •  05-10-2009, 13:33 54241 σε απάντηση της 54240

    Απ: Μετάβαση σε συγκεριμένο item ενός listview (datacontext)

    Δυστυχώς, έχεις φτάσει στα όρια αυτής της τεχνικής. Το πρόβλημα είναι στο ότι χρησιμοποιείς το control προγραμματιστικά, για να κάνεις πράγματα που κάνει ο χρήστης μέσα από το UI πράγμα που συνεπάγεται ότι περιορίζεσαι από τα properties και τα methods που σου δίνει το control. Επίσης, αν κάποια στιγμή χρειαστεί να αντικαταστήσεις το control με κάποια άλλο, έχεις αρκετή δουλειά να κάνεις για να ξαναπαίξει ο κώδικας. Το σωστό είναι να κάνεις bind το control πάνω σε κάποιο object που να λειτουργεί ως ενδιάμεσος ανάμεσα στο control και τα data. Ειδικά, το WPF παρέχει πολύ πλούσια υποστήριξη data-binding και μπορείς να το εκμεταλλευτείς αυτό για να κάνεις bind σε ένα δικό σου object που να κάνει ακριβώς αυτά που θες. 

    Για παράδειγμα, αν έχεις ένα collection από Orders, μην το κάνεις bind απ' ευθείας στο DataGrid, φτιάξε μια κλάση που να έχει ως property ένα ObservableCollection<Order> και κάνε bind το control πάνω σε αυτό. Επίσης, τυπικά βάζεις κι ένα property SelectedOrder ώστε να το κάνεις bind με το SelectedItem του control και να ξέρεις τι έχει επιλέξει ο χρήστης. Μετά βάλε methods ώστε να γίνεται το navigation όπως θες, να κάνεις validation, να κάνεις sorting και filtering, κλπ, κλπ.

    Γενικά, σε ένα post είναι εξαιρετικά δύσκολο να καλυφθεί το θέμα του Data Biding στο WPF. Ψάξε on-line έχοντας κατά νου αυτά που σου είπα, δηλαδή απέφυγε οτιδήποτε λέει για το πως κάνεις databind κάτι που έρχεται κατευθείαν από τη βάση. Κάνε ένα βήμα πίσω και αφιέρωσε λίγο χρόνο για να μάθεις την τεχνολογία και κατόπιν ξεκίνα πάλι.


    Vir prudens non contra ventum mingit
  •  05-10-2009, 14:52 54243 σε απάντηση της 54241

    Απ: Μετάβαση σε συγκεριμένο item ενός listview (datacontext)

    Ευχαριστώ για την απάντηση.

    Είμαι ακόμη στην αρχή και κατάφερα να φτάσω στα όρια τα controls? Anyway, ελπίζω να βρω άκρη.

    Έχω να το ψάξω λοιπόν και επιστρέφω.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems