<?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>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24299.aspx</link><pubDate>Wed, 31 Jan 2007 06:33:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24299</guid><dc:creator>PALLADIN</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24299.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24299</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;cap:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;ακόμα δεν μου εξηγήσατε τι σημαίνει GOB Object και θα μείνω με την απορία :)&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Oups Sorry Σωτήρη εννοούσα &lt;A href="http://en.wikipedia.org/wiki/God_object"&gt;God object&lt;/A&gt;....&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;cap:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;ξέρεις οτι το όνομά σου είναι και race στο WoW ε; :)&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;Ναι το ξέρω, είναι ένα πολύ ιδιαίτερο race... Υπήρχαν και στο παλιό real time strategy Warcraft.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;Πάντως για την ιστορία, το Palladin προέρχεται απο το επίθετό μου =&amp;gt;&amp;nbsp;Παλλαδινός&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24297.aspx</link><pubDate>Wed, 31 Jan 2007 04:17:13 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24297</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24297.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24297</wfw:commentRss><description>&lt;P&gt;Ναι, έχεις δίκιο Μανο. Μπερδεύτηκα εγώ. &lt;/P&gt;
&lt;P&gt;Οκ, σωστά! Αρα λοιπόν αν δεν ενδιαφέρεται κάποιος για άλλα πράγματα παρά μόνο για το refresh των bound controls του, αρκεί να σηκώσει ΕΝΑ event για να γίνουν refresh ΟΛΑ τα controls που βρίσκονται bound επάνω στο συγκεκριμένο instance. Τι propertyChanged για κάθε property και αηδίες...:)&lt;/P&gt;
&lt;P&gt;Γκρουμφ. Χρήσιμος ο κώδικάς σου, αλλά κακή ως κάκιστη η υλοποίηση του binding σε αυτο το σημείο. Τουλάχιστον θα μπορούσε να έχει ένα BindingManager.Refresh(myInstance). (Η εχει; ;) )&lt;/P&gt;
&lt;P&gt;Κλείνω το θέμα, ευχαριστώ για τις απαντήσεις. Κυριε Palladin (ξέρεις οτι το όνομά σου είναι και race στο WoW ε; :) , ακόμα δεν μου εξηγήσατε τι σημαίνει GOB Object και θα μείνω με την απορία :)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24283.aspx</link><pubDate>Wed, 31 Jan 2007 01:01:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24283</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24283.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24283</wfw:commentRss><description>&lt;P&gt;Μάλλον δεν συνενοηθήκαμε. Αυτό το θέμα δεν το καλύψαμε; O binding manager κάνει refresh όλα τα controls που είναι binded πάνω στο object σου. Δε νομίζω να μπορείς να κάνεις κάτι γι αυτό. Η Νατάσα όμως είπε &lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Νατάσα Μανουσοπούλου:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Αν το PropertyChanged event προκαλείται κάθε φορά που αλλάζει η τιμή οποιυδήποτε property που συμμετέχει σε binding, τότε η συμπεριφορά αυτή δεν έχει να προσφέρει κάτι. Αντίθετα, ενημερώνει τα controls πολλαπλές φορές σε συνεχόμενες αλλαγές διαφορετικών properties.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Ως προς αυτό, για να γλυτώσεις τα 1000 raise events, κάνεις αυτό που έγραψα με το suspend/resume. Μου φαίνεται πολύ μεγαλύτερο το overhead που προκαλείται από 1000 raiseevents παρά από το refresh 1000 controls.&lt;/P&gt;
&lt;P&gt;Edit: Όπου 1000 raise events επί 1000 control refreshes = 100000 control refreshes μιας και κάθε raise event θα προκαλεί 1000 refresh&lt;/P&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24282.aspx</link><pubDate>Wed, 31 Jan 2007 00:50:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24282</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24282.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24282</wfw:commentRss><description>&lt;P&gt;Μανο, αυτό που παραθέτεις είναι σωστό. Μονο που:&lt;/P&gt;
&lt;P&gt;Εστω οτι εγώ έχω n bound properties ενός business object και σηκώνω ΜΟΝΟ για ένα το PropertyChanged Event. Βλέπω όμως στη φόρμα, παρόλο που σήκωσα propertyChanged event για το συγκεκριμένο property, να ενημερώνονται ΟΛΕΣ οι τιμές (αυτό που έλεγα στην αρχή). Ενα event δεν έχει τρέξει; Αυτό που έκανα raise;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24281.aspx</link><pubDate>Wed, 31 Jan 2007 00:46:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24281</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24281.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24281</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;cap:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; &lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Νατάσα Μανουσοπούλου:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Αν το PropertyChanged event προκαλείται κάθε φορά που αλλάζει η τιμή οποιυδήποτε property που συμμετέχει σε binding, τότε η συμπεριφορά αυτή δεν έχει να προσφέρει κάτι. Αντίθετα, ενημερώνει τα controls πολλαπλές φορές σε συνεχόμενες αλλαγές διαφορετικών properties.&lt;BR&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Αυτό ακριβώς ήταν που μου έκανε εντύπωση. Φαντάσου να έχω ένα business object με 1000 properties (λέμε τώρα) bound σε αντίστοιχα 1000 controls μιας μεγαααααλης φόρμας (και πάλι λέμε τώρα) και να αλλάξει ΕΝΑ property. Θα γίνουν update και τα 1000! &lt;/P&gt;
&lt;P&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Είναι αναπόφευκτο ωστόσο, όταν δεν ξέρεις ποιό από τα 1000 properties θα αλλάξει. Αν ξέρεις, βάζεις το PropeprtyChanged μόνο στο property που σε ενδιαφέρει. Από την άλλη, μπορείς να αποφύγεις έναν τέτοιο σενάριο υλοποιώντας τον κατάλληλο μηχανισμό. Πρόσεξε: Ο designer όταν σχεδιάζει τη φόρμα βάζει στην αρχή Me.SuspendLayout και αφού τοποθετήσει όλα τα controls, στο τέλος Me.ResumeLayout(False) ώστε να αποφύγει τον τμηματικό σχεδιασμό της φόρμας. Το ίδιο κάνει και το DataRow object όπου με DataRow.BeginEdit κάνεις suspend την ενεργοποίηση των events που προκύπτουν από τα validation rules και στο τέλος με DataRow.ΕndEdit κάνεις ένα συνολικό validate. Αντίστοιχα κι εσύ μπορείς να φτιάξεις ένα ζευγάρι Begin/End ή Suspend/Resume για τη business κλάση σου. Πχ:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Imports System.ComponentModel&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Public Class Customer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Implements INotifyPropertyChanged&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _CustomerID As String&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _CustomerName As String&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private notificationSuspended As Boolean = False&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Property CustomerID() As String&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _CustomerID&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _CustomerID = value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaisePropertyChanged("CustomerID")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Property CustomerName() As String&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _CustomerName&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _CustomerName = value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaisePropertyChanged("CustomerName")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub SuspendNotification()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notificationSuspended = True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub ResumeNotification(ByVal notifyChanges As Boolean)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notificationSuspended = False&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If notifyChanges Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaisePropertyChanged(String.Empty)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub RaisePropertyChanged(ByVal propertyName As String)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not notificationSuspended Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;BR&gt;End Class&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Έτσι, αν πεις &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.CustomerID = "a"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.CustomerName = "b"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;τρέχουν δύο events. Αν πεις&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.SuspendNotification()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.CustomerID &amp;amp;= "2"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.CustomerName &amp;amp;= "2"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.ResumeNotification(True)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;τρέχει ένα event. Και αν πεις &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.SuspendNotification()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.CustomerID &amp;amp;= "3"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.CustomerName &amp;amp;= "3"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.ResumeNotification(False)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;δεν τρέχει κανένα event.&lt;/P&gt;
&lt;P&gt;Happy? &lt;/P&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24280.aspx</link><pubDate>Wed, 31 Jan 2007 00:43:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24280</guid><dc:creator>PALLADIN</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24280.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24280</wfw:commentRss><description>&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="MS Sans Serif"&gt;&lt;FONT face=Tahoma&gt;Η&lt;/FONT&gt;θελα να πω ότι η MS αποφάσισε να έχει αυτή την συμεριφορά για να αποφεύγονται αντικείμενα με 1000 properties... &lt;/FONT&gt;To post &lt;FONT face=Tahoma&gt;ειχε&lt;/FONT&gt;&lt;FONT face="MS Sans Serif"&gt; χιουμοριστική διάθεση&lt;FONT face=Tahoma&gt;&lt;img src="http://62.1.45.162/cs/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24279.aspx</link><pubDate>Wed, 31 Jan 2007 00:36:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24279</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24279.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24279</wfw:commentRss><description>(Ξυνει κεφάλι απορημένος) Τιντούτ;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24278.aspx</link><pubDate>Wed, 31 Jan 2007 00:29:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24278</guid><dc:creator>PALLADIN</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24278.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24278</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://62.1.45.162/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;cap:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
&lt;P&gt;Αυτό ακριβώς ήταν που μου έκανε εντύπωση. Φαντάσου να έχω ένα business object με 1000 properties (λέμε τώρα) bound σε αντίστοιχα 1000 controls μιας μεγαααααλης φόρμας (και πάλι λέμε τώρα) και να αλλάξει ΕΝΑ property. Θα γίνουν update και τα 1000! &lt;/P&gt;
&lt;P&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;Είναι by design προειδοποίηση για code smell τύπου Gob object &lt;img src="http://62.1.45.162/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24274.aspx</link><pubDate>Wed, 31 Jan 2007 00:05:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24274</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24274.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24274</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Νατάσα Μανουσοπούλου:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Αν το PropertyChanged event προκαλείται κάθε φορά που αλλάζει η τιμή οποιυδήποτε property που συμμετέχει σε binding, τότε η συμπεριφορά αυτή δεν έχει να προσφέρει κάτι. Αντίθετα, ενημερώνει τα controls πολλαπλές φορές σε συνεχόμενες αλλαγές διαφορετικών properties.&lt;BR&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Αυτό ακριβώς ήταν που μου έκανε εντύπωση. Φαντάσου να έχω ένα business object με 1000 properties (λέμε τώρα) bound σε αντίστοιχα 1000 controls μιας μεγαααααλης φόρμας (και πάλι λέμε τώρα) και να αλλάξει ΕΝΑ property. Θα γίνουν update και τα 1000! &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24273.aspx</link><pubDate>Tue, 30 Jan 2007 23:19:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24273</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24273.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24273</wfw:commentRss><description>&lt;P&gt;Το δοκίμασα και το ίδιο συμβαίνει αν παίξεις με τον τρόπο που υποστηρίζεται στο Framework 1.1. Δηλαδή για κάθε property που αλλάζει να διαθέτεις κι από ένα event που κατά σύμβαση έχει όνομα &amp;lt;propertyname&amp;gt;Changed και να το ενεργοποιείς στο set του property.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24272.aspx</link><pubDate>Tue, 30 Jan 2007 23:11:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24272</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24272.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24272</wfw:commentRss><description>Αν το PropertyChanged event προκαλείται κάθε φορά που αλλάζει η τιμή οποιυδήποτε property που συμμετέχει σε binding, τότε η συμπεριφορά αυτή δεν έχει να προσφέρει κάτι. Αντίθετα, ενημερώνει τα controls πολλαπλές φορές σε συνεχόμενες αλλαγές διαφορετικών properties.&lt;br&gt;</description></item><item><title>Απ:INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24270.aspx</link><pubDate>Tue, 30 Jan 2007 22:52:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24270</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24270.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24270</wfw:commentRss><description>&lt;P&gt;Γενικά το INotifyPropertyChanged είναι ένα πολύ απλό interface με τo PropertyChanged να περιέχει ως EventArg το όνομα του property που έχει αλλάξει. That's all. Από εκεί και πέρα αυτό που περιγράφεις (όχι ότι&amp;nbsp;έχω τίποτα πληροφορίες εκ των έσω) μάλλον είναι by design. Για να πω την αλήθεια μου φαίνεται πολύ φυσιολογική αυτή η συμπεριφορά. Αν υποθέσουμε ότι έχουμε ένα binded object που μέσω κάποιου method αλλάζουν μερικά properties, δεν θα ήταν πολύ incosistent να δεις να αλλάζει η τιμή σε μερικά από αυτά τα properties ενώ στα υπόλοιπα άλλη τιμή θα δείχνει το control και άλλη θα έχει το property;&amp;nbsp;Δεν θα έχεις εσφαλμένη εντύπωση για την τιμή των υπολοίπων;&amp;nbsp;Ίσως στο business μοντέλο σου&amp;nbsp;να έχει λογική κάτι τέτοιο&amp;nbsp;ωστόσο μου φαίνεται φυσιολογικός αυτός ο τρόπος λειτουργίας...&lt;/P&gt;</description></item><item><title>INotifyPropertyChanged - Απορία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24262.aspx</link><pubDate>Tue, 30 Jan 2007 21:07:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24262</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24262.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=24262</wfw:commentRss><description>&lt;P&gt;Σενάριο: &lt;/P&gt;
&lt;P&gt;Εχω ένα business object με 5-6 properties (counters κυρίως) τους οποίους έχω δέσει με simple binding (mycontrol.databindings.add("text", myBusinessObject, "MyPropertyName") σε ορισμένα labels μιας φόρμας.&lt;/P&gt;
&lt;P&gt;Τα συγκεκριμένα properties είναι read-only και αλλάζουν εσωτερικά από το ίδιο των business object το οποίο "πειράζει" όταν τρέχουν κάποιες methods του τα property backer variables. Οκ μεχρι εδώ, για να "βλέπουν" λοιπόν τα bound control τις αλλαγές χρειάζεται να υλοποιηθεί το INotifyPropertyChanged, όπως και έκανα.&lt;/P&gt;
&lt;P&gt;Παρατήρησα όμως κάτι αξιον αναφοράς: Λογω του οτι στο ίδιο instance του business object έχω bound 5-6 properties σε αντίστοιχα labels της φόρμας μου, αρκεί να κάνω raiseEvent για ΕΝΑ από αυτά και ενημερώνονται οι τιμές και των 6 στη φόρμα! Δηλαδή, όταν σηκώνω το Event PropertyChanged είναι σαν να μην τον ενδιαφέρει το συγκεκριμένο property αλλά να κάνει update τα bindings όλων των properties που βρίσκονται bound στο συγκεκριμένο instance!&lt;/P&gt;
&lt;P&gt;Κουλό, ή behaviour by design; Και αν by design, μήπως ξέρει κανείς το γιατί;&lt;/P&gt;</description></item></channel></rss>