Pergunta

Provavelmente isso será óbvio, mas não consigo encontrar a melhor maneira.

Quero mostrar as tarefas do usuário em uma caixa de listagem.Esses ToDo's estão no banco de dados e consistem em um Id, UserId e Description.

O usuário fez login no aplicativo.

Como posso recuperar os ToDos para esse determinado userId e configurá-lo para vinculação à caixa de listagem?

Eu estava tentando com um ObjectDataProvider, mas não consigo descobrir como usá-lo em combinação com coisas não estáticas (como meu _dbService, userId, idioma, ...).

As únicas opções para tornar todas essas coisas estáticas versus vinculativas no código por trás?

Se sim, isso significa que ObjectDataProvider não é muito útil, não?Encontro muitos exemplos de uso com um parâmetro codificado, mas dificilmente vejo qualquer situação em que precise de tal funcionalidade.

Foi útil?

Solução

Eu faço todo o meu WPF usando o Modelo-Visualização-ViewModel padrão.Eu lhe dei um link lá, mas o Google lhe dará muitos.MVVM parece ser o padrão para WPF. Este projeto é provavelmente mais complicado do que você precisa, mas é bem escrito e traz para casa o uso do MVVM.

Basicamente, você cria um modelo de seus dados.Nesse caso, você provavelmente criaria uma classe simples (chamarei de ToDoItem) com propriedades Id, UserID e Description.Use seu mecanismo preferido para obter uma coleção deles do banco de dados.Link para SQL, Entity Framework, uma consulta padrão, qualquer que seja.

Então você tem o seu ViewModel - você tem uma instância do ViewModel para cada instância do Model:a VM tem uma referência às propriedades M e 'encaminha' para ela.O ViewModel é o que você usa para manipular o modelo.

Então você tem sua Visualização - esta é a UI.Você define o DataContext do View como o ViewModel e, em seguida, suas ligações são vinculadas automaticamente ao ViewModel.Sua visão acaba sendo as coisas que você pode ver.Todo o trabalho é feito no ViewModel.Isso significa que é muito fácil de testar.

Então, quando você clica em um botão na sua View, as ligações passam isso para um Comando no seu ViewModel que manipula o Modelo.

A UI também é uma View com um ViewModel.Portanto, sua UI VM pode carregar uma coleção de modelos do banco de dados e colocá-los em um ObservableCollection.A coleção de itens ListBox estaria vinculada a este ObservableCollection.

É difícil explicar tudo isso em um post como esse.Leia alguns artigos e veja o que você pensa.Ainda sou muito novo nisso, mas acredito que minha leitura sobre MVVM valeu a pena.

Outras dicas

Hela Thomas, Tom aqui do Orbit One :)

MVVM é o caminho a percorrer.Estou no meu quarto projeto e o WPF realmente brilha se você usar o mvvm.Você já experimentou o MVC (ou MVP como fizemos no recy*tyre) e essa é uma boa separação de preocupações.O MVVM vai um passo além, já que o viewmodel não sabe absolutamente nada sobre a view.

A view se liga ao viewmodel, então tem uma referência a ele (2 vias, super poderosa e funciona além da demonstração típica do MS).O viewmodel é apenas um poco e é uma representação da sua visão, dados + comportamento.Depois de ler este parágrafo, o termo legal mvvm não terá segredos.

Vejo se consigo fazer uma pequena demonstração.Talvez eu tenha tempo mais tarde.O que vou criar é uma visualização (xaml, arquivo 1) que se liga a um modelo de visualização (arquivo 2, uma classe poco, para não confundir com o código por trás).O modelo pode ser o que você quiser (camada de serviço ou diretamente para os repositórios).Usando o poder da ligação bidirecional, nos vincularemos a uma coleção observável, o que significa que se adicionarmos/excluirmos/...algo para a coleção, a visualização irá captá-lo sem que coloquemos energia nisso.

Meus primeiros 2 projetos wpf foram feitos com Caliburn Micro (veja codeplex), que é uma estrutura poderosa baseada em convenções.Ele protege você do wpf hardcore (principalmente criando propriedades de dependência de tour) e você pode criar algo relativamente rápido sem entender completamente o wpf.Isso é uma desvantagem por si só, mas funcionou para mim.A partir do projeto 3, comecei a domesticar essas propriedades de dependência e isso fará de você um desenvolvedor WPF melhor.

Vejo que a pergunta é de outubro.você encontrou uma boa solução?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top