fbpx
× Share your code snippets, screen shots etc. here

WinForms and DataBinding

  • Wolfgang Riedmann
  • Wolfgang Riedmann's Avatar Topic Author
  • Offline
More
1 year 1 week ago #1 by Wolfgang Riedmann
WinForms and DataBinding was created by Wolfgang Riedmann
After working a lot with WPFs databinding, I have researched a bit about WinForms databinding, and I have to present a possible solution (again influenced from the years of VO programming :)).
WinForms databinding seems to be not so powerful as WPFs databinding, but simple solutions are possible also here. Please look at this peace of code:
using System.Windows.Forms        
using System.ComponentModel

class BaseView inherit Form
	
constructor()
	
return
	
method Use( oViewModel as INotifyPropertyChanged ) as void 
local oControls	as System.Windows.Forms.Control.ControlCollection
local oTextBox as TextBox

oControls := self:Controls
foreach oControl as Control in oControls 
  do case
  case oControl is TextBox
    oTextBox := ( TextBox ) oControl
    oTextBox:DataBindings:Add( "Text", oViewModel, oTextBox:Name )
  endcase
next
	
return
	
end class
Inherit your window class from this class (BaseView), and then build a ViewModel that implements the INotifyPropertyChanged interface. Assign this ViewModel then to your window in the Use() method, and the databinding will work:
oSampleView := SampleView{}
oSampleView:Use( SampleViewModel{} )
Application.Run( oSampleView )
Of course, the data in your ViewModel (or you can use the terminus "server") if you prefer :)) can come from any datasource, even from a DBF.

As always you can find a complete working sample application in XIDE export format attached to this message.

Wolfgang
Attachments:

Please Log in or Create an account to join the conversation.