• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 817
  • Last Modified:

INotifyPropertyChanged property name proglem

I've got a problem with a PropertyChanged event been ignore when DataBinding. The property in question is called "Property" which leads me to believe that it could be a reserved name. However I've found no mention in the documentation of this being the case.

When I call EndEdit on the BindingSource, the changes to Property are ignored, but the changes to Property1 are retained. The PropertyChanged event for "Property" is definitely being raised.

Also note that the databinding will display the initial value correctly. It's only the updating that doesn't work

The work around is of course to change the name to something other than "Property", a bit annoying as Property is the exact description of what is contained (a segment of an address), and is what is used in a 3rd party address resolving tool.

Basically, maximum points to anyone who can point me to where it says I'm not allowed to databind to a property called "Property", and why this fails silently rather than throwing an exception.

I've attached a fully working example to demonstrate what happens. Just compile using:
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe Form1.txt
BindingSource source;
    MyControl myControl = new MyControl();
 
    private void Form1_Load(object sender, EventArgs e) {
      this.Controls.Add(myControl);
      source = new BindingSource();
 
      DataTable table = new DataTable();
      table.Columns.Add("fldProperty", typeof(decimal));
      table.Columns.Add("fldProperty1", typeof(decimal));
      table.Rows.Add(0, 0);
      table.Rows.Add(10, 10);
      table.Rows.Add(20, 20);
      table.AcceptChanges();
      source.DataSource = table;
 
      dataGridView1.DataSource = source;
      myControl.DataBindings.Add("Property", source, "fldProperty");
      myControl.DataBindings.Add("Property1", source, "fldProperty1");
    }
 
 
    private void button1_Click(object sender, EventArgs e) {
      myControl.Property++;
      myControl.Property1++;
      source.EndEdit();
    }
 
// Snip
 
  public class MyControl : Control, INotifyPropertyChanged {
    private decimal property, property1;
 
    #region INotifyPropertyChanged Members
    public event PropertyChangedEventHandler PropertyChanged;
 
    protected void OnPropertyChanged(string propertyName) {
      if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
    #endregion
 
    public decimal Property {
      get { return property; }
      set { 
        property = value;
        OnPropertyChanged("Property");
      }
    }
 
    public decimal Property1 {
      get { return property1; }
      set {
        property1 = value;
        OnPropertyChanged("Property1");
      }
    }
  }

Open in new window

Form1.txt
0
oobayly
Asked:
oobayly
  • 4
  • 2
1 Solution
 
williamcampbellCommented:
I tried changing the name to lowercase "property" and it worked.

I think you have stumbled upon an "interesting" bug.

I notice in this book snippet the same thing
http://books.google.com/books?id=F_q6Rcc-8yIC&pg=PA250&lpg=PA250&dq=DataBindings+Add("Property")&source=bl&ots=LpBBLm2kb4&sig=nPJDRIJ7UxFBuDpVs1q7u2PSXeg&hl=en&ei=pe0RSqfwFZ_ItAPrlMjtDQ&sa=X&oi=book_result&ct=result&resnum=4



0
 
oobaylyAuthor Commented:
Bah, I'd hoped that somebody wouldn't use the B-word :-)
Going to post a bug report on connect.microsoft.com (not that it will do much). When I've posted the bug report, I'll post the link here as well.

As for changing the name to lowercase, it makes sense as Reflection is case sensitive by default, so it has the same effect as changing the name.
0
 
oobaylyAuthor Commented:
I've posted a bug report at Microsoft Connect:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=454486

If you don't mind, I'm going to leave this open until MS get back with a response. If it looks like a bug, acts like a bug and quacks like a bug :-), then it's probably a bug. I'm just a glass is half full kind of person, so I'm hanging on with a shred of hope.
0
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

 
williamcampbellCommented:
Let it go, Move on :)
0
 
oobaylyAuthor Commented:
But it just feels like it's too soon to move on. :-)
0
 
oobaylyAuthor Commented:
Seeing as you confirmed my suspicion that it's a bug.
However, I'll post any follow ups from Microsoft Connect.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now