J'écris une application dans WPF, à l'aide de la boîte à outils MVVM et posez des problèmes de connexion de la vue et de la vue.
Le modèle est créé avec ADO.NET Entity Framework. P>
La vue : p> et la vue (aucun code derrière le moment): p> et dataaccesslayer classe: p > class DataAccessLayer
{
public List<Customer> customers = new List<Customer>();
public static List<Customer> getcustomers()
{
entities db = new entities();
var customers = from c in db.Customer.Include("Orders")
select c;
return customers.ToList();
}
}
3 Réponses :
est Ce ce que vous cherchez pour? p>
Oui et non. J'ai besoin d'appeler la méthode getcustomers (). Devrais-je le faire dans un constructeur de menu de vie? Ne semble pas très bon.
Personnellement, j'aurais l'appel de mention de vue GetCustomers () dans le constructeur. Que pensez-vous n'est pas bon à ce sujet? Lorsque l'affichage rend une nouvelle instance de la viewModel et à ce point, vous souhaitez que les données soient récupérées, il est donc logique que le constructeur le fasse.
Qu'en est-il de la construction XAML
Le seul problème majeur avec la déclaration de l'objet dans le XAML est que toute erreur projetée pendant la construction VM sera consommée par une erreur d'analyse XAML. Nous nous sommes éteints pour utiliser un DI comme MEF pour avoir injecté la machine virtuelle dans le DataContext de la vue à la charge. Onload peut incendier plusieurs fois alors assurez-vous de vous couper le court-circuit avec un champ chargé ou quelque chose de similaire.
Oui c'est une meilleure solution à utiliser di à coup sûr. Bon commentaire!
Étant donné que cela utilise le paradigme MVVM, j'inspire votre viewModel dans le constructeur pour la vue. Mes images de vue / views suivent généralement cette séquence d'événements:
My ViewModel est instancié à partir du XAML CodeBeHind (Désolé, c'est dans VB.Net, vous n'avez pas eu d'abord d'apprendre C # assez bien pour me faire confiance): P>
<UserControl> <UserControl.DataContext> <Local:EditShipmentViewModel> </UserControl.DataContext> </UserControl>
C'est le contraire de MVVM.
@Edplunkett Vous êtes totalement bienvenu pour poster une réponse.
C'est l'un des anti-modèles les plus courants du WPF. Vous ne devriez pas encourager les débutants à utiliser des anti-motifs qui leur causeront des problèmes et de la frustration.
Je fixe mon point de vueModel DataContext de la même manière que j'ai observé Blend4 à. C'est-à-dire que si mon point de vue est appelé MainviewModel, je le référenne dans la vue comme: En outre, si vous chargez des données d'une base de données dans le constructeur de votre viewModel, ne faites pas Oubliez d'ajouter une méthode d'assistance autour de lui comme: p> de sorte que Visual Studio / Blend4 ne s'effondre pas d'essayer de récupérer les données de la connexion de la base de données dans le concepteur. Je charge personnellement des données dans le constructeur assez souvent, juste parce que j'en ai besoin tout de suite, et car il doit être mis en cache en mémoire du démarrage. P> :) p> p>
Dans votre code, vous avez une propriété AllCustomers sur votre modèle de vue, mais vous lissez pour les clients.
Je nettoyais légèrement le code et je faisais une faute de frappe. La liaison dans le code de travail est bien sûr correcte.