<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Presentation Foundation (WPF)</title><link>https://www.dotnetzone.gr:443/cs/forums/102/ShowForum.aspx</link><description>Συζήτηση σχετικά με το πώς μπορεί το WPF να δημιουργήσει οπτικά ελκυστικές εφαρμογές ώστε να βελτιώσουν το user experience.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: MVVM και παράθυρα διαλόγου</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67679.aspx</link><pubDate>Sat, 08 Oct 2011 19:49:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67679</guid><dc:creator>Geysser</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67679.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=102&amp;PostID=67679</wfw:commentRss><description>Σίγουρα έχεις δίκιο όταν λες ότι, ανάλογα με την τεχνολογία που χρησιμοποιείς, πρέπει να προσαρμόζεις ανάλογα τον τρόπο σκέψης σου. Ας μου επιτραπει όμως να αντιστρέψω λίγο τον ισχυρισμό σου. Πρέπει κι εγώ ν'αρχίζω να γράφω τις desktop εφαρμογές μου με την λογική του web ή των smartphones; Ανέκαθεν οι one-window εφαρμογές - που συνήθως δούλευαν με workspaces ή όπως αλλιώς το ονομάζει κανείς - φάνταζαν κουλές. Ακόμα και τώρα, εφαρμογές που διατυμπανίζουν ότι "όλα γίνονται σε ένα παράθυρο", κάποια στιγμή θα αναγκαστούν να πετάξουν ένα messagebox ή ενα παράθυρο διαλόγου. Είμαι της άποψης ότι ο κάθε χώρος έχει την λογική του. Όπως δεν μπορείς - και δεν πρέπει - να προγραμματίζεις σε Android σα να είσαι στο desktop, έτσι δεν μπορείς - και δεν πρέπει - να προγραμματίζεις στο desktop σα να είσαι σε Android.&lt;br&gt;</description></item><item><title>Απ: MVVM και παράθυρα διαλόγου</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67677.aspx</link><pubDate>Sat, 08 Oct 2011 18:02:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67677</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67677.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=102&amp;PostID=67677</wfw:commentRss><description>&lt;p&gt;Δεν νομίζω ότι θα έπρεπε να αντιμετωπίζεις το ζήτημα από αυτή την σκοπιά - το dialog box είναι μια εφεύρεση που υπήρξε στην ροή εργασίας με τα Windows Forms για να διακόψει την ροή του χρήστη και να του εισάγει μια επείγουσα διαδικασία. Είναι κουτό να προσπαθήσεις να κάνεις το ίδιο σε άλλες τεχνολογίες. Και καλά σε WPF και Silverlight στο desktop σε παίρνει να το κάνεις. Στο web, τα pop-ups κάποτε κυριαρχούσαν, τώρα και για ένα alert() σκέφτεσαι δύο φορές πριν το βάλεις από τα pop-up blockers, και αποφασίζεις ότι θα το κάνεις με jQuery ή μια παρόμοια τεχνολογία. &lt;/p&gt;&lt;p&gt;Συνεχίζοντας τον ισχυρισμό μου, τον επεκτείνω στα κινητά τηλέφωνα, που λόγω της μικρής οθόνης, δεν σκέφτεσαι καν να "πετάξεις" ένα dialog πάνω από μία οθόνη - οδηγείς το χρήστη σε νέα οθόνη, για να κάνει την εργασία. Από ότι έχει φανεί, οι χρήστες είναι "ευέλικτοι" και δεν έχουν πρόβλημα με αυτή την νέα διαδικασία. Το πρόβλημα όμως φαίνεται να είναι στον προγραμματιστή που δεν είναι αποφασισμένος να το αποδεχτεί...&lt;br&gt;&lt;/p&gt;&lt;p&gt;George J.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: MVVM και παράθυρα διαλόγου</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67673.aspx</link><pubDate>Sat, 08 Oct 2011 07:13:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67673</guid><dc:creator>Geysser</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67673.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=102&amp;PostID=67673</wfw:commentRss><description>Αυτό το "εξαρτάται" είναι που με έχει φάει! Ναι, μιλάμε για σύνθετα παράθυρα διαλόγου. Ένα απλό MessageBox, πάει στον κόρακα, θα το βγάλω στο ViewModel - αν και νευριάζω λίγο που δεν δέχεται styling - και ας ωρύονται οι απανταχού ένθερμοι αμύντορες. Όπως είπα όμως, πρόκειται για παράθυρο ρυθμίσεων, κι εκεί είναι που αρχίζεις τα Lexotanil. Το MVVM Light δεν το έχω εξετάσει, αλλά ψιθυρίζεται ότι δεν προτείνεται για αρχάριους. Θα το εξετάσω όμως.&lt;br&gt;Από κει και πέρα, όλα τούτα αποτελούν προσωπική περιπέτεια. Δεν υπάρχει κάποια ομάδα γύρω μου, δεν υπάρχει Project Manager στον σβέρκο μου σαν τον Χάροντα με την δρεπάνα, δεν υπάρχουν deadlines. Άρα δεν έχω καμία όρεξη να μπλέξω με unit tests, με skins και άλλα ωραία. Γηράσκω αεί διδασκόμενος, όμως, και το MVVM μοιάζει αναπόφευκτο, τουλάχιστον until the next big thing. Μαζοχισμός; Ίσως. Μισή ντροπή δική μου, μισή στην Κίνα βρίσκεται. &lt;br&gt;</description></item><item><title>Απ: MVVM και παράθυρα διαλόγου</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67672.aspx</link><pubDate>Sat, 08 Oct 2011 03:06:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67672</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67672.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=102&amp;PostID=67672</wfw:commentRss><description>&lt;P&gt;Εξαρτάται τι θες να κάνεις, εξαρτάται, εξαρτάται, εξαρτάται. Καταρχήν να πω ότι αν δεν σκοπεύεις να κάνεις unit testing ή να κάνεις sharing τον XAML κώδικα με κάποιον designer ή να υποστηρίζει η εφαρμογή σου skins, τότε το MVVM σε βάζει να πηδήξεις πολλά στεφάνια (και μερικά από αυτά φλεγόμενα) χωρίς να καρπώνεσαι τα καλά του. Αν θες να μπορείς να κάνεις τα προηγούμενα θα πρέπει να πληρώσεις το τίμημα. Από εκεί και πέρα, υπάρχουν dialogs και dialogs. Αν πρόκειται για κάποιο πολύ απλό dialog (τύπου&amp;nbsp;confirm ή exception), τότε το κέρδος του να το κάνεις με τον κλασικό τρόπο είναι συνήθως μεγαλύτερο από το να υλοποιήσεις έναν ολόκληρο μηχανισμό. Αν πρόκειται για ένα σύνθετο dialog, τότε υπάρχουν αρκετές λύσεις και φτάνουμε στο "εξαρτάται, εξαρτάται, εξαρτάται". Εδώ είναι που ξεφεύγεις από την πεπατημένη και δεν έχεις πλέον "μπούσουλα" καθώς εμφανίζονται διάφορες επιλογές η κάθε μία με τα πλεονεκτήματα και τα μειονεκτήμα της. Ένα άλλο πράγμα που μπαίνει στο "εξαρτάται" είναι αν χρησιμοποιηείς ήδη κάποιο framework. Αν πχ στην εφαρμογή σου δεν παίζεις με DI ή δεν παίζεις με MEF, καλύτερα να μην υλοποιήσεις μια λύση που έχει DI ή MEF μόνο και μόνο για τα dialogs. Το βασικό πρόβλημα με τα dialogs στο MVVM είναι ότι με τον κλασικό τρόπο υπάρχει μεγάλη περίπτωση να δημιουργηθούν memory leaks λόγω των event handlers που παραμένουν στη μνήμη και γι αυτό οι πιο περίπλοκες υλοποιήσεις χρησιμοποιούν weak references. Και για να φτάσουμε στο δια ταύτα, θα σου πρότεινα να εξετάσεις την τεχνική του &lt;A href="http://lmgtfy.com/?q=mvvm+mediator+pattern"&gt;mediator pattern&lt;/A&gt; πάνω στην οποία βασίζεται ο Messenger του MVVM Light.&lt;/P&gt;</description></item><item><title>Απ: MVVM και παράθυρα διαλόγου</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67666.aspx</link><pubDate>Fri, 07 Oct 2011 19:51:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67666</guid><dc:creator>Geysser</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67666.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=102&amp;PostID=67666</wfw:commentRss><description>Απ'όλα τα πιθανά σενάρια τα οποία έχω δει εκεί έξω, η λύση της Service μου φάνηκε κι εμένα σαν η πιο προσιτή. Το κόλλημά μου είναι όμως ότι - όπως και για το MVVM γενικά - δεν υπάρχει κάποιος στάνταρ τροπος υλοποίησης που να μπορώ να ακολουθήσω. Ένας μπούσουλας είναι αυτό που λείπει για να μου λύσει τα χέρια.&amp;nbsp; &lt;br&gt;</description></item><item><title>Απ: MVVM και παράθυρα διαλόγου</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67661.aspx</link><pubDate>Fri, 07 Oct 2011 18:13:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67661</guid><dc:creator>George Parissis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67661.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=102&amp;PostID=67661</wfw:commentRss><description>&lt;p&gt;Επειδή το ίδιο πρόβλημα είχα, έχω&amp;nbsp;και λογικά ο κάθε ένας,&amp;nbsp;άποψή μου είναι να διαλέξεις&amp;nbsp;ένα τρόπο από αυτούς που ανέφερες να μείνεις σε αυτόν σε όλα τα projects σου&amp;nbsp;έτσι ώστε αν στην πορεία βρεις κάτι άλλο να μπορείς εύκολα να αλλάξεις. Εγώ προτίμησα την λογική των Services. &amp;nbsp;Με DI και το service να υλοποιεί ένα Interface όλα&amp;nbsp;είναι εντάξει. Φυσικά άλλοι προτιμούν άλλο τρόπο και σεβαστό.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>MVVM και παράθυρα διαλόγου</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67659.aspx</link><pubDate>Fri, 07 Oct 2011 14:06:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67659</guid><dc:creator>Geysser</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67659.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=102&amp;PostID=67659</wfw:commentRss><description>Απ'ότι έχω καταλάβει ψάχνοντας στο Internet, πρόκειται για μεγάλο βραχνά! Το σενάριο έχει ως εξής και είναι απλό: ρύθμιση παραμέτρων μέσω ενός παραθύρου. Πατάς κουμπάκι, βγαίνει παραθυράκι, κάνεις τις ρυθμίσεις σου και πατάς ΟΚ. Στις παλιές, καλές ημέρες, τούτο φαινόταν εύκολο. Μέχρι που ήρθε ο διάολος το MVVM και γυρίσανε τα πάνω κάτω. Ο ένας προτείνει μια DialogService, ο άλλος Behaviors, ο τρίτος μιλάει για dependency injection, σκάει μύτη και ο απίθανος που λέει - για όνομα του Χριστού και της Παναγίας! - "μην χρησιμοποιείς παράθυρα διαλόγου!". Κάνε subscribe σε events στο ViewModel, πήγαινε Αθήνα-Θεσσαλονίκη μέσω Βλαδιβοστόκ, χόρεψε τον χορό της βροχής...κι όλα αυτά γιατί κάποιος είχε την φαεινή ιδέα ότι το code behind βλάπτει, τζιζ, φτου κακά και μακριά από μας! Click events? Παλιατζούρες και αρχαία ιστορία! Commands και ξερό ψωμί! ShowDialog()? Ούτε καν! Κάνε ένα interface, στρώσε μια κλάση που θα το κάνει implement, ρίξε και ένα τάμα στην Παναγία της Τήνου. Γιατί βρε παιδιά; Πρέπει να έχω τριανταπέντε Bachelor στην Πληροφορική και να μιλάω C# αντί για ελληνικά στον περιπτερά της γειτονιάς μου;&lt;br&gt;Μακρυγορω και με συγχωρείτε. Το ερώτημά μου: μπορεί κάποιος να μου δώσει μια απλή λύση για το παραπάνω πρόβλημα;&lt;br&gt;&lt;br&gt;ΥΓ: Για να προλάβω αυτόν που θα ρωτήσει "γιατί ταλαιπωρείσαι με το MVVM αφού είσαι νιόκος και δεν καταλαβαίνεις υψηλά νοήματα όπως delegation και dependencies" η απάντηση είναι η εξής: γιατί θέλω να τα καταλάβω! &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;</description></item></channel></rss>