none
Windows Forms, Bindings e Padrões de Projeto RRS feed

  • 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
    terça-feira, 20 de março de 2012 19:52

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.

    quarta-feira, 21 de março de 2012 16:39
  • 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

    segunda-feira, 23 de abril de 2012 14:53
  • 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
    terça-feira, 24 de abril de 2012 13:37
    Moderador