2010-05-12 7 views
2

J'ai une base de données SQL contenant un certain nombre de valeurs numériques et de texte mises à jour régulièrement. Le nombre exact/le type/les noms de ces points de données peuvent changer en fonction de la source des écritures de la base de données. Je voudrais créer un éditeur d'interface utilisateur, où l'utilisateur peut ajouter des points de base de données à l'interface utilisateur et les organiser et les formater comme ils le souhaitent. Si un nouveau point est ajouté à la base de données, il peut faire un clic droit sur l'interface utilisateur et dire "ajouter ce point" et choisir parmi une liste de points de base de données.Création d'une interface utilisateur personnalisée dans WPF

Je suis à la recherche de quelques pointeurs sur la façon de commencer à créer cette application d'édition, est-ce que quelque chose d'intelligent pourrait être fait en utilisant XAML pour créer dynamiquement des contrôles WPF std lors de l'exécution?


Doug,

Toutes mes excuses, par des points de base de données que je veux dire simplement des lignes dans la base de données qui représentent un élément à afficher dans l'interface utilisateur.


Ray/Sushant,

Merci d'avoir pris le temps de répondre, je vais faire une expérience à ces deux approches.

Si

+2

:) – Marek

+0

Je pense que c'est un peu flou comme ce que vous entendez par "points de base de données". Voulez-vous dire des connexions de base de données? Veuillez clarifier ... – Doug

Répondre

3

Voici un moyen facile de faire ceci:

  1. Créer une classe DataPoint, y compris les champs "Nom", "Type" et "Value"
  2. Créer un DataPointView UserControl expose une propriété Name et une propriété DataPoint en lecture seule. Lorsque la propriété Name est définie, chargez le DataPoint à partir de la base de données. Utilisez éventuellement une minuterie pour recharger périodiquement le DataPoint (ou vous abonner pour mettre à jour les notifications de votre base de données).
  3. Créer une classe UIEditor provenant de la fenêtre qui expose une propriété CurrentForm qui est d'abord une toile vierge
  4. Ajouter des gestionnaires pour ApplicationCommands.Open, ApplicationCommands.Save, etc à utiliser XamlParser et XamlWriter pour charger/enregistrer la mise en page de/vers un fichier sur le disque (ou une base de données)
  5. Dans votre fichier XIE de UIEditor, incluez un ContentPresenter lié à la propriété CurrentForm pour contenir l'interface utilisateur en cours de modification. Aussi toutes les autres commandes souhaitées (bouton Enregistrer, bouton Ouvrir, palette, etc.).
  6. Dans le fichier XAML de votre DataPointView, affichez le nom et la valeur du point de données. Chaque fois qu'un événement de déplacement de souris suit un événement de souris sur un DataPointView, capturez la souris et commencez à ajuster les coordonnées de gauche et de dessus de DataPointView - cela permet à l'utilisateur de faire glisser le curseur vers le bas. DataPointView autour du canevas.
  7. Dans votre XAML DataPointView, incluez un ContextMenu dont ItemsSource est lié à {{Binding AvailablePoints, RelativeSource = {RelativeSource FindAncestor, mon: UIEditor, 1}} "et assurez-vous que la propriété AvailablePoints de votre classe UIEditor renvoie une liste de MenuItems avec les noms des points de données disponibles et commande appropriée un paramètre de commande.
  8. Dans votre gestionnaire pour la commande lié dans le menu contextuel, ajoutez une nouvelle DataPointView à votre toile CurrentForm et définissez son nom du nom donné dans le CommandParameter
  9. Set Focusable = true sur les objets DataPointView et poignée ApplicationCommands. Supprimer en supprimant le DataPointView ciblé.

Avec ce code écrit:

  • Vous pouvez permettre aux utilisateurs de modifier votre interface utilisateur en montrant une fenêtre UIEditor.
  • Vous pouvez afficher votre interface utilisateur sans les fonctions d'édition en la chargeant simplement à partir du disque en utilisant Application.LoadComponent et en l'affichant dans une fenêtre.
0

utilisez WPF DataGrid disponible comme WPF ToolKit dans .NET 3.5 ou standard pour .NET 4.0. Il présente les caractéristiques suivantes:

  1. colonnes de données hautement personnalisable
  2. Utilisez les lignes éditables qui peuvent être persistaient
  3. Les colonnes peuvent être ajoutés/supprimés/réarrangés à la volée.
  4. peut charger directement les noms de colonnes de base de données

et beaucoup plus.

Je pense que ce serait parfait.

Veuillez cocher la réponse si cela vous semble utile. Merci. Veulent-ils que vous répliquiez MS Access?

+0

La boîte à outils WPF est disponible au http://wpf.codeplex.com/releases/view/40535 –

Questions connexes