Comment construire dynamique formes d'entrée de données dans une application WPF?
Je suis la planification d'une application WPF qui
- être en mesure de créer dynamique formes d'entrée de données (le sens de la forme devient le champs à afficher, leur ordre, etc. à partir des données de la base de données, pas de la XAML)
- utiliser le pattern MVVM, si possible
Voici comment j'ai l'intention d'aller à ce sujet: dans une Entrée de Données de point de Vue, je voudrais définir le contexte de données:
<UserControl.DataContext>
<vm:DynamicFormViewModel/>
</UserControl.DataContext>
et puis d'inclure un élément dans mon XAML comme un espace réservé pour la forme:
<UserControl.Content>
<view:DynamicFormView x:Name="CustomerEntry"/>
</UserControl.Content>
ensuite dans mon ModelView je veux pas avoir des propriétés statiques mais je veux construire le XAML comme un construit HTML contrôles de retour dans ASP.NET dans ce mode:
View view = new View();
view.Children.Add(...)
et dans cette façon de construire la Grille basée sur la collecte de données (prénom, nom) et les méta-données (champ de l'étiquette, le nom du champ, le champ helptext, le champ ordre d'affichage, etc.) qui le ViewModel obtient à partir du Modèle.
- quelqu'un a construit une application WPF qui pourrait créer des formulaires dynamiques de cette manière?
- avez-vous utilisé le modèle MVVM?
- est-il possible d'utiliser le modèle MVVM de cette façon, ou ne le pattern MVVM présupposent champs statiques dans le Modèle de Vue qui sont directement liés aux éléments statiques de la Vue?
OriginalL'auteur Edward Tanguay | 2009-04-24
Vous devez vous connecter pour publier un commentaire.
Vous aurez à rédiger des modèles de données pour les différents types de données de terrain ainsi que WPF vont choisir comment afficher vos données en fonction de son type. quelque chose de ce format:
REMARQUE: Ce n'est pas WPF juste le pseudo-code
Il n'a pas à être un type primitif. Il peut être un
Email
,DateApproved
ou même unUrl
type de classe. par exemple,..etc...
Mise à jour
Découvrez ce WPF Dynamique de l'INTERFACE utilisateur exemple sur MSDN: Saisie de Données dynamiques avec WPF et LINQ
Mettre les choses dans le code XAML pour moi se sent à l'électricité statique. Je me rappelle à l'ASP.NET apps, dans presque tous les projets dont vous avez fini par avoir un petit peu par Défaut.aspx avec un couple des contrôles qui ont tous été créés dynamiquement. Sinon, vous pouvez en créer une en temps, des applications statiques, qui ne peut pas être changé très facilement. Je suppose que pour obtenir cette nature dynamique de WPF, vous aurez également justn un petit Window1.xaml et puis eveyything être créé dynamiquement de la même manière.
Ce post semble être vieux. Mais je voudrais faire quelque chose de similaire dans WPF 4.0. Le lien vers le WPF Dynamique de l'INTERFACE utilisateur exemple semble être rompu. Quelqu'un sait-il un autre exemple?
OriginalL'auteur Soni Ali
Vous avez besoin pour l'installation d'un DataTemplate pour chaque type de champ par exemple la Date, String, Bool. Cela permettra de déterminer comment chaque champ apparaît.
Vous pouvez alors utiliser les colonnes d'une requête de base de données pour générer une liste des objets et les placer dans un ItemsControl.
Chaque élément dans l'élément de contrôle de l'affichage basé sur le DataTemplate pour ce type.
À l'intérieur de la ColumnDef vous pouvez utiliser la Réflexion pour la mise à jour de l'objet de données avec les modifications apportées sur les contrôles de l'INTERFACE utilisateur. Vous pouvez ensuite appliquer les modifications à la databae lorsque l'utilisateur enregistre.
OriginalL'auteur Steven