Inquiridor
Windows Forms, Bindings e Padrões de Projeto

Pergunta
-
Boa tarde.
Venho há algum tempo trabalhando com WPF e entity framework usando o padrão MVVM, ou seja, tratamento de dados através de Databindings.
Gostaria de saber se o mesmo conceito de bindings é apropriado para Windows Forms ou existe algum outro padrão mais adequado para o tratamento de aplicações multi-camadas.
Essa minha questão visa em obter os recursos que o framework .Net possui para esses tipos de aplicações, pois não gostaria de retroceder ao velho padrão "Orientado a Eventos".
Obrigado!
- Editado Fábio Benatti terça-feira, 20 de março de 2012 20:13 Correção ortográfica
Todas as Respostas
-
Fábio boa tarde, não sei se pode te ajudar mais, um outro padrão muito bem aceito e que está em evidencia para o desenvolvimento tanto para aplicações desktops quanto para a web seria o padrão MVC e o framework de persistência Nhibernate.
Bom espero ter ajudado você em alguma coisa.
Boa sorte.
-
WPF é realmente poderoso com relação aos Bindings.
Em WinForm existe binding também, mas é muito engessado: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.databindings.aspx
Achei também esse artigo sobre fazer o Binding do WinForm parecido com o WPF, mas não sei se vale a pena o esforço.
Take a look at WPF FlashMessage
-
Olá Fábio,
Os controles do Windows Forms suportam Bindings e pode usar o padrão MVVM.
Os bindings são feitos em diretamente em C# através de objetos da classe Binding, onde você associa propriedades dos controles a propriedades do seu ViewModel.
O seu ViewModel deve implementar a interface INotifyPropertyChanged, como no WPF, e apesar de não existir o conceito de "Converters", os objetos da classe Binding possuem os eventos Format e Parse, que são disparados nas duas fases do binding e são equivalentes ao Convert e ConvertBack respectivamente.
Exemplo:
var binding = new Binding("Text", viewModelCliente, "Nome", true, DataSourceUpdateMode.OnPropertyChanged); binding.Format += (o, args) => { // ... }; binding.Parse += (o, args) => { // ... }; nomeClienteTextBox.DataBindings.Add(binding);
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Sugerido como Resposta Ari C. RaimundoModerator quarta-feira, 25 de abril de 2012 04:53