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

 

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

Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

Îåêßíçóå áðü ôï ìÝëïò George J. Capnias. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 24-07-2011, 23:20. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-07-2011, 17:14 66626

    Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

    Κάνω κάποιες δοκιμές αυτές τις μέρες με το Windows Phone 7 SDK - data binding και απεικόνηση δεδομένων - όχι extreme περιπτώσεις.

    Θέλω να χρησιμοποιήσω το WebBrowser control για να απεικονίσω ένα πεδίο που περιέχει html. Το WebBrowser control δεν περιέχει κάποιο Property που μπορεί κάποιος να κάνει bind html κώδικα. Μια λύση στο πρόβλημα είναι τα attached properties και μια λύση στο πρόβλημα περιγράφεται στη δημοσίευση "Binding Html to the Web Browser Control".

    Αν το control είναι visible την ώρα που θα γίνει το bind, τότε όλα καλά.

    Αν το control γίνει bind κατά το load event, σύνηθες για το MVVM pattern, το WebBrowser control επιστρέφει το μήνημα: "You cannot call WebBrowser methods until it is in the visual treeYou cannot call WebBrowser methods until it is in the visual tree", που είναι λογικό μιας και το WebBrowser control μπορεί να δεχτεί αλλαγή στα περιεχόμενά του, αφού ολοκληρωθεί το Load event...

    Υπάρχει κάποιος που έχει να προτείνει μια αποτελεσματική λύση στο πρόβλημα;

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  21-07-2011, 18:02 66627 σε απάντηση της 66626

    Απ: Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

    Μπα, παίζουμε και με WP τώρα?

    Δεν μπορώ να περιγράψω πόσες φορές θέλησα να κάνω φόνο τις τελευταίες μέρες επειδή κάποιος "ξέχασε" ή "δεν σκέφτηκε" ότι ένα απαραίτητο property θα πρέπει να είναι και DependencyProperty. Αντιμετώπισα κι εγώ το πρόβλημα με attached properties αλλά αντί να πειράζω το control απευθείας, πρόσθεσα ένα handler στο event που ήθελα (π.χ. στο Loaded ή Activated) και εκεί έβαλα τον κώδικα που ήθελα να τρέξω.

    Ο λόγος που το έκανα αυτό ήταν ότι είχα ξεκινήσει με behaviors και όταν κόλλησα κάπου (δεν έπαιζε inheritance στα DependencyProperties ) απλά έβαλα ένα attached property το οποίο στο PropertyChanged event "κόλλαγε" τον κώδικα όπως και το behavior.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-07-2011, 18:37 66628 σε απάντηση της 66627

    Απ: Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

    Εδώ που τα λέμε, αν θέλεις να κάνεις "κάτι" όταν σηκωθεί κάποιο event μπορείς άνετα να χρησιμοποιήσεις triggers και ένα CallMethodAction το οποίο θα καλέσει τη μέθοδο που θέλεις στο ViewModel. Θα χρειαστείς 6-7 γραμμές στο view απλά και μόνο για να πεις ορίσεις το event και το action αλλά γλυτώνεις τη δημιουργία ενός νέου behavior ή attached property.

    Το "μείον" είναι ότι το CallMethodAction σε δένει περισσότερο με το ViewModel. Αν το action αυτό αφορά UI functionality καλύτερα να μην το μπλέξεις με το ViewModel. Άσε που ένα behavior ή attached property χρειάζονται πολύ λιγότερο XML.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  23-07-2011, 18:15 66653 σε απάντηση της 66628

    Απ: Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

    Λοιπόν, έφτιαξα ένα UserControl που έχει ένα WebBrowser control και μόνο μία ιδιότητα: Html! Έχω πιάσει το WebBrowser.Loaded, περνάω το html κώδικα στην ιδιότητα Html και μέσα στο Loaded handler κάνω το WebBrowser.NavigateToString στον html κώδικα.

    Και ενώ κατάφερα να μην "σπάσω" το MVVM pattern στην ανάπτυξη, η html σελίδα που δείχνει το WebBrowser control είναι στα "κορακίστικα": Το string είναι Unicode, και περνάω content tag utf-8. Έχω πάλι πέσει σε "περίπτωση";

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  23-07-2011, 23:43 66656 σε απάντηση της 66653

    Απ: Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

    Μπορεί να φταίει ακριβώς ότι έβαλες το UTF-8. To .ΝΕΤ χρησιμοποιεί UTF-16 encoding για τα string κι εσύ λες ότι το string που περνάς είναι σε UTF8.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-07-2011, 21:45 66659 σε απάντηση της 66656

    Απ: Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

    Παναγιώτης Καναβός:
    Μπορεί να φταίει ακριβώς ότι έβαλες το UTF-8. To .ΝΕΤ χρησιμοποιεί UTF-16 encoding για τα string κι εσύ λες ότι το string που περνάς είναι σε UTF8.

    Ναι το δέχομαι αυτό: Και η ερώτηση τώρα => Πως θα περάσω ένα UTF-8 string σαν string, αν εξ ορισμού τα string είναι UTF-16; Εκτός αν το html, αν του βάλω στο content tag, υποστηρίζει και utf-16 και μου διαφεύγει...

     

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  24-07-2011, 23:20 66660 σε απάντηση της 66659

    Απ: Ερώτηση Windows Phone 7: Eίναι δυνατό το Binding στο WebBrowser Control

    To UTF-16 είναι υπαρκτό encoding ενώ υπάρχουν encodings και για το UCS2 (το υποσύνολο που χρησιμοποιούν τα Windows). Το ότι υπάρχουν πάντως δεν σημαίνει ότι τα υποστηρίζει και ο browser, αν και θα μου φαινόταν περίεργο να μην παίζει το UTF16.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems