by Logo Technical Blog – Future Processing
09.12.2013
Learning through teaching_

That’s a true story. This conversation between me and a new member of my team happened when I was introducing him to the world of WPF. For the purpose of this text, let’s call him Zenon.

Zenon: hey, bindings ignore private property setters and just use them.

Me: ? – I approach his computer, debug and can’t believe what I see. I return to my computer, create some simple application (because I bet his computer is broken or sth). I can’t believe even more. Strange… Uncle Google. Whew – it was a load off my mind. Error in .NET 4.5! Here are the details:

public class Person
{
    private string _name;
    public string Name
    {
        get { return _name; }
        private set
        {
            if (_name == value)
            {
                return;
            }
            _name = value;
        }
     }
}

For such a defined class TwoWay Binding respects setter’s privacy and an exception is just thrown – perfectly, but:

public class Person : NotificationObject
{
    private string _name;
    public string Name
    {
        get { return _name; }
        private set
        {
            if (_name == value)
            {
                return;
            }
            _name = value;
            RaisePropertyChanged(...);
        }
    }
}

Here Mr Binding is doing what he wants – error concerns a different Binding interpretation of objects implementing INotifyPropertyChanged (in our case, from Prism) and those which don’t implement them.

Thanks Zenon!

Comments

Cookies

This website stores cookies on your computer. These cookies are used to improve our website and provide more personalized services to you, both on this website and through other media. To find out more about the cookies we use, see our Cookies policy.