using Nuclex.Windows.Forms.Views; using System; using System.Windows.Forms; namespace Nuclex.Windows.Forms.AutoBinding { /// /// Binds a view to its model using a convention-over-configuration approach /// public class ConventionBinder : IAutoBinder { /// Binds the specified view to an explicitly selected view model /// /// Type of view model the view will be bound to /// /// View that will be bound to a view model /// View model the view will be bound to public void Bind(Control view, TViewModel viewModel) where TViewModel : class { bind(view, viewModel); } /// /// Binds the specified view to the view model specified in its DataContext /// /// View that will be bound public void Bind(Control viewControl) { IView viewControlAsView = viewControl as IView; if(viewControlAsView == null) { throw new InvalidOperationException( "The specified view has no view model associated. Either assign your " + "view model to the view's data context beforehand or use the overload " + "of Bind() that allows you to explicitly specify the view model." ); } bind(viewControl, viewControlAsView.DataContext); } /// Binds a view to a view model /// View that will be bound /// View model the view will be bound to private void bind(Control view, object viewModel) { } } } // namespace Nuclex.Windows.Forms.AutoBinding