Question

Ce sera probablement évident, mais je ne peux pas trouver la meilleure façon.

Je veux montrer dans une zone de liste de ToDo de l'utilisateur. Ces années sont ToDo dans la base de données et se composent d'un identifiant, UserId et description.

L'utilisateur connecté à l'application.

Comment puis-je récupérer de l'ToDo pour que certains userId et le mettre en place pour la liaison à la zone de liste?

Je tentais avec un ObjectDataProvider mais je ne peux pas comprendre comment utiliser qui, en combinaison avec des trucs non statique (comme mon _dbService, userId, langue, ...).

sont les seules options pour faire toutes ces choses statiques par rapport à la liaison dans le code sous-jacent?

Si oui, cela signifie que ObjectDataProvider est pas très utile, non? Je trouve beaucoup d'exemples de celui-ci étant utilisé avec un paramètre hardcoded mais je ne vois guère de situation où je besoin d'une telle fonctionnalité ..

Était-ce utile?

La solution

Je fais tout mon WPF en utilisant Model-View-ViewModel . Je vous ai donné un lien là mais Google vous donnera des charges. MVVM semble être le modèle standard pour WPF. Ce projet est probablement plus compliqué que vous avez besoin, mais il est bien écrit et ramène à la maison l'utilisation de MVVM.

En gros, vous créez un modèle de vos données. Dans ce cas, vous auriez probablement créer une classe simple (je vais l'appeler ToDoItem) avec des propriétés Id, UserID et description. Utilisez votre mécanisme préféré pour obtenir une collection de ces de la base de données. Lien vers SQL, Entity Framework, une requête standard, peu importe.

Alors vous avez votre ViewModel - vous avez une instance de la ViewModel pour chaque instance du modèle: la machine virtuelle a une référence à la M et les propriétés « vers l'avant » à elle. Le ViewModel est ce que vous utilisez pour manipuler le modèle.

Ensuite, vous avez votre vue - c'est l'interface utilisateur. Vous définissez le DataContext de la vue à la ViewModel et vos liaisons se lient automatiquement au ViewModel. Votre vue se termine juste par être les choses que vous pouvez voir. Tous les travaux se fait dans le ViewModel. Cela signifie qu'il est très facile à tester.

Alors, lorsque vous cliquez sur un bouton dans votre vue, les liaisons passent ce sur une commande dans votre ViewModel qui manipule le modèle.

L'interface utilisateur est également une vue avec un ViewModel. Ainsi, votre VM interface utilisateur peut charger une collection de modèles de la base de données et de les coller dans un ObservableCollection. Les éléments de ListBox collection serait lié à cette ObservableCollection.

Il est difficile d'expliquer tout cela dans un poste comme celui-ci. Lire quelques articles et voir ce que vous pensez. Je suis encore assez nouveau à cela aussi, mais je crois que ma lecture à propos de MVVM a payé.

Autres conseils

Hela Thomas, Tom ici de Orbit One:)

MVVM est le chemin à parcourir. Je suis sur mon 4ème projet et WPF brille vraiment si vous utilisez MVVM. Vous avez déjà essayé MVC (ou MVP comme nous l'avons fait sur Recy * pneu) et c'est une séparation agréable de préoccupation. MVVM il faut un peu plus loin puisque le viewmodel ne connaît absolument rien sur la vue.

Le point de vue se fixe sur la viewmodel, il a donc une référence à elle (2 voies, super puissante et fonctionne au-delà de la démonstration typique MS). Le viewmodel est juste un poco et est une représentation de votre point de vue, les données + comportement. Une fois que vous creusez ce paragraphe, le terme MVVM cool aura pas de secret.

Je vois si je peux venir avec une petite démo. Peut-être que je vais avoir le temps plus tard. Ce que je vais venir avec une vue (XAML, fichier 1) qui se lie à un viewmodel (fichier 2, une classe poco, ne pas être confondu avec le code derrière). Le modèle peut être tout ce que vous aimez (couche de service ou directement aux dépôts). En utilisant la puissance de 2 voies de liaison nous lier à une collection observable qui signifie que si l'on ajoute / supprimer / ... quelque chose à la collection de la vue va le ramasser sans nous mettre de l'énergie en elle.

Mon premier 2 projets WPF a été fait avec Caliburn Micro (voir CodePlex) qui est un cadre puissant basé sur les conventions. Il vous protège loin de WPF hardcore (création de propriétés de dépendance tour vous-même principalement) et vous pouvez créer quelque chose de relativement rapide sans WPF comprendre pleinement. C'est un inconvénient de lui-même, mais cela a fonctionné pour moi. En date du projet 3 j'ai commencé à dompter les propriétés de dépendance moi-même et il vous fera un meilleur développeur de WPF.

Je vois la question est d'Octobre .. avez-vous trouvé une bonne solution?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top