winforms databinding best practices

Posted by Kaiser Soze on Stack Overflow See other posts from Stack Overflow or by Kaiser Soze
Published on 2010-03-16T19:35:32Z Indexed on 2010/03/16 20:01 UTC
Read the original article Hit count: 1149

Demands / problems:

  1. I would like to bind multiple properties of an entity to controls in a form. Some of which are read only from time to time (according to business logic).
  2. When using an entity that implements INotifyPropertyChanged as the DataSource, every change notification refreshes all the controls bound to that data source (easy to verify - just bind two properties to two controls and invoke a change notification on one of them, you will see that both properties are hit and reevaluated).
  3. There should be user friendly error notifications (the entity implements IDataErrorInfo). (probably using ErrorProvider)

Using the entity as the DataSource of the controls leads to performance issues and makes life harder when its time for a control to be read only.

I thought of creating some kind of wrapper that holds the entity and a specific property so that each control would be bound to a different DataSource. Moreover, that wrapper could hold the ReadOnly indicator for that property so the control would be bound directly to that value.

The wrapper could look like this:

interface IPropertyWrapper : INotifyPropertyChanged, IDataErrorInfo
{
    object Value { get; set; }

    bool IsReadOnly { get; }
}

But this means also a different ErrorProvider for each property (property wrapper)

I feel like I'm trying to reinvent the wheel... What is the 'proper' way of handling complex binding demands like these?

Thanks ahead.

© Stack Overflow or respective owner

Related posts about databinding

Related posts about winforms