I had started a Common WPF Pitfalls on stackoverflow and this has been one
of the suggested items:

http://stackoverflow.com/questions/2597591/common-wpf-pitfalls

<http://stackoverflow.com/questions/2597591/common-wpf-pitfalls>As a rule,
you should not put any logic in the getter or setter of a dependency
property.

Not only will the Binding system ignore the logic but also you (and anyone
else having access) can use {Property}.SetValue() and {Property}.GetValue()
to set the value of this property without going through the setter/getter.

cheers,
Patrick

On Tue, Sep 7, 2010 at 12:00 PM, <[email protected]> wrote:

> Send ozwpf mailing list submissions to
>        [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
> or, via email, send a message with subject or body 'help' to
>        [email protected]
>
> You can reach the person managing the list at
>        [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of ozwpf digest..."
>
>
> Today's Topics:
>
>   1. Dependency properties (Stephen Price)
>   2. RE: Dependency properties ([email protected])
>   3. RE: Dependency properties (Greg Keogh)
>   4. Re: Dependency properties (Winston Pang)
>   5. Re: Dependency properties (Stephen Price)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 6 Sep 2010 10:30:37 +0800
> From: Stephen Price <[email protected]>
> Subject: Dependency properties
> To: ozWPF <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset=ISO-8859-1
>
> hey all,
>
> Someone on the team suggested some changes to a property that I had
> due to something to do with the WPF binding engine not using the
> property to get the underlaying values. This threw me and I've not had
> a chance to research/proof this but thought I'd throw it out here for
> comment.
>
> public string Filter
>        {
>            get
>            {
>                if(somecondition) return somethingElse;
>                return (string)GetValue(FilterProperty);
>            }
>            set
>            {
>                SetValue(FilterProperty, value);
>            }
>        }
>
> so I have a filter property with some logic in it, but apparently if I
> bind to this the wpf binding goes straight to the FilterProperty
> instead of my Filter property. I'll research this when I have a spare
> min unless someone can debunk it. :)
>
> have a great day!
> Stephen
>
>
> ------------------------------
>
> Message: 2
> Date: Mon, 6 Sep 2010 10:44:04 +0800
> From: [email protected]
> Subject: RE: Dependency properties
> To: [email protected]
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="us-ascii"
>
> That's right.  For performance, the framework will go straight to the
> backing store, bypassing your property.
>
>
>
> As a general rule of thumb, only your own code that uses the property
> will go through the property (though you can go straight to the backing
> store yourself if you want).
>
>
>
> To ensure code gets run, I normally use the OnPropertyChanged override.
> This always fires after the property has changed, even if the backing
> store approach was used.
>
>
>
> Carl.
>
>
>
> Carl Scarlett
>
> Senior .NET/WPF Developer, UX Designer - Genesis Team
>
> IT Applications Delivery | Bankwest
>
> A: Level 5, 199 Hay Street | Perth | Western Australia | 6004
>
> P: (08) 9449 8703
>
> M: 0408 913 870
>
> E: [email protected]
>
>
>
>
>
>
>
>
>
> From: [email protected] [mailto:[email protected]]
> On Behalf Of Stephen Price <[email protected]>
> Sent: Monday, 6 September 2010 10:31 AM
> To: ozWPF <[email protected]>
> Subject: Dependency properties
>
>
>
> hey all,
>
> Someone on the team suggested some changes to a property that I had
> due to something to do with the WPF binding engine not using the
> property to get the underlaying values. This threw me and I've not had
> a chance to research/proof this but thought I'd throw it out here for
> comment.
>
> public string Filter
> {
> get
> {
> if(somecondition) return somethingElse;
> return (string)GetValue(FilterProperty);
> }
> set
> {
> SetValue(FilterProperty, value);
> }
> }
>
> so I have a filter property with some logic in it, but apparently if I
> bind to this the wpf binding goes straight to the FilterProperty
> instead of my Filter property. I'll research this when I have a spare
> min unless someone can debunk it. :)
>
> have a great day!
> Stephen
> _______________________________________________
> ozwpf mailing list
> [email protected]
> http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
>
> ______________________________________________________________________
> This email has been scanned by the MessageLabs Email Security System.
> For more information please visit http://www.messagelabs.com/email
> ______________________________________________________________________
>
> ________________________________________________________________________
> _______
>
> This email has been scanned by the Bankwest Email Security System.
> ________________________________________________________________________
> _______
>
>
> _______________________________________________________________________________
> Unencrypted electronic mail is not secure and may not be authentic.
> If you have any doubts as to the contents please telephone to confirm.
>
> This electronic transmission including any attachments is intended only
> for those to whom it is addressed. It may contain copyright material or
> information that is confidential, privileged or exempt from disclosure by
> law.
> Any claim to privilege is not waived or lost by reason of mistaken
> transmission
> of this information. If you are not the intended recipient you must not
> distribute or copy this transmission and should please notify the sender.
> Your costs for doing this will be reimbursed by the sender.
>
> We do not accept liability in connection with computer virus, data
> corruption,
> delay, interruption, unauthorised access or unauthorised amendment.
>
> _______________________________________________________________________________
>
>
> ______________________________________________________________________
> This email has been scanned by the MessageLabs Email Security System.
> For more information please visit http://www.messagelabs.com/email
> ______________________________________________________________________
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://prdlxvm0001.codify.net/pipermail/ozwpf/attachments/20100906/cbef3b30/attachment-0001.html
>
> ------------------------------
>
> Message: 3
> Date: Mon, 6 Sep 2010 13:07:12 +1000
> From: "Greg Keogh" <[email protected]>
> Subject: RE: Dependency properties
> To: "'ozWPF'" <[email protected]>
> Message-ID: <001801cb4d70$9a0bc690$ce2353...@net>
> Content-Type: text/plain;       charset="us-ascii"
>
> Yeah, you're not supposed to put logic in the get/set code. I think a few
> of
> my books mentioned this in passing. Your code may not get called when
> binding happens or the XAML is parsed -- Greg
>
>
>
> ------------------------------
>
> Message: 4
> Date: Mon, 6 Sep 2010 13:13:44 +1000
> From: Winston Pang <[email protected]>
> Subject: Re: Dependency properties
> To: ozWPF <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Yeah, specifically WPF Unleashed mentions this. Logic should really go in
> the CoerceCallbacks, or PropertyChanged, etc ones.
>
> On Mon, Sep 6, 2010 at 1:07 PM, Greg Keogh <[email protected]> wrote:
>
> > Yeah, you're not supposed to put logic in the get/set code. I think a few
> > of
> > my books mentioned this in passing. Your code may not get called when
> > binding happens or the XAML is parsed -- Greg
> >
> > _______________________________________________
> > ozwpf mailing list
> > [email protected]
> > http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://prdlxvm0001.codify.net/pipermail/ozwpf/attachments/20100906/bd9a942e/attachment-0001.html
>
> ------------------------------
>
> Message: 5
> Date: Mon, 6 Sep 2010 11:42:46 +0800
> From: Stephen Price <[email protected]>
> Subject: Re: Dependency properties
> To: ozWPF <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset=windows-1252
>
> thanks all... that's kind of crazy, but glad I know about it now.
>
> I'm assuming its the same case for Silverlight?
>
> cheers,
> Stephen
>
> On Mon, Sep 6, 2010 at 10:44 AM,  <[email protected]> wrote:
> > That?s right.? For performance, the framework will go straight to the
> > backing store, bypassing your property.
> >
> >
> >
> > As a general rule of thumb, only your own code that uses the property
> will
> > go through the property (though you can go straight to the backing store
> > yourself if you want).
> >
> >
> >
> > To ensure code gets run, I normally use the OnPropertyChanged override.
> > This always fires after the property has changed, even if the backing
> store
> > approach was used.
> >
> >
> >
> > Carl.
> >
> >
> >
> > Carl Scarlett
> >
> > Senior .NET/WPF Developer, UX Designer - Genesis Team
> >
> > IT Applications Delivery | Bankwest
> >
> > A: Level 5, 199 Hay Street | Perth | Western Australia | 6004
> >
> > P: (08) 9449 8703
> >
> > M: 0408 913 870
> >
> > E: [email protected]
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > From: [email protected] [mailto:[email protected]]
> On
> > Behalf Of Stephen Price <[email protected]>
> > Sent: Monday, 6 September 2010 10:31 AM
> > To: ozWPF <[email protected]>
> > Subject: Dependency properties
> >
> >
> >
> > hey all,
> >
> > Someone on the team suggested some changes to a property that I had
> > due to something to do with the WPF binding engine not using the
> > property to get the underlaying values. This threw me and I've not had
> > a chance to research/proof this but thought I'd throw it out here for
> > comment.
> >
> > public string Filter
> > {
> > get
> > {
> > if(somecondition) return somethingElse;
> > return (string)GetValue(FilterProperty);
> > }
> > set
> > {
> > SetValue(FilterProperty, value);
> > }
> > }
> >
> > so I have a filter property with some logic in it, but apparently if I
> > bind to this the wpf binding goes straight to the FilterProperty
> > instead of my Filter property. I'll research this when I have a spare
> > min unless someone can debunk it. :)
> >
> > have a great day!
> > Stephen
> > _______________________________________________
> > ozwpf mailing list
> > [email protected]
> > http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
> >
> > ______________________________________________________________________
> > This email has been scanned by the MessageLabs Email Security System.
> > For more information please visit http://www.messagelabs.com/email
> > ______________________________________________________________________
> >
> >
> _______________________________________________________________________________
> >
> > This email has been scanned by the Bankwest Email Security System.
> >
> _______________________________________________________________________________
> >
> >
> _______________________________________________________________________________
> > Unencrypted electronic mail is not secure and may not be authentic.
> > If you have any doubts as to the contents please telephone to confirm.
> >
> > This electronic transmission including any attachments is intended only
> > for those to whom it is addressed. It may contain copyright material or
> > information that is confidential, privileged or exempt from disclosure by
> > law.
> > Any claim to privilege is not waived or lost by reason of mistaken
> > transmission
> > of this information. If you are not the intended recipient you must not
> > distribute or copy this transmission and should please notify the sender.
> > Your costs for doing this will be reimbursed by the sender.
> >
> > We do not accept liability in connection with computer virus, data
> > corruption,
> > delay, interruption, unauthorised access or unauthorised amendment.
> > ___________________________________
> >  ____________________________________________
> >
> > ______________________________________________________________________
> > This email has been scanned by the MessageLabs Email Security System.
> > For more information please visit http://www.messagelabs.com/email
> > ______________________________________________________________________
> >
> > _______________________________________________
> > ozwpf mailing list
> > [email protected]
> > http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
> >
> >
>
>
> ------------------------------
>
> _______________________________________________
> ozwpf mailing list
> [email protected]
> http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
>
>
> End of ozwpf Digest, Vol 8, Issue 1
> ***********************************
>
_______________________________________________
ozwpf mailing list
[email protected]
http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf

Reply via email to