2010-01-25 8 views
5

J'ai besoin de créer une application de CAO de bureau qui devrait essentiellement avoir une belle interface graphique moderne. Je pense à créer une application WPF pour que je puisse avoir une interface utilisateur riche. Quelqu'un pourrait-il me suggérer une interface graphique de l'application de bureau bien conçue dans WPF, s'il vous plaît? J'ai trouvé une interface graphique sympa dans cette vidéo http://channel9.msdn.com/posts/Psychlist1972/Pete-at-PDC09-WPF-3d-Awesomeness-with-Tor-and-Robby/ mais je ne suis pas sûr des commandes qu'ils ont utilisées dans leur application. Quelqu'un a-t-il une idée des contrôles utilisés?créer une interface graphique agréable dans WPF

Existe-t-il un contrôle de grille de propriétés dans WPF? J'ai essayé d'utiliser la grille dans Windows Forms. Personnaliser cette grille pour répondre à mes besoins semble être difficile. Il montre toutes les propriétés de l'objet directement de la classe la plus basique à la plus dérivée.

Répondre

5

Avec WPF, beaucoup est possible. Vous trouverez une grande variété d'applications dans diverses applications, car à la différence de Windows Forms, WPF peut être conçu et stylé comme le HTML. Les concepteurs réels peuvent facilement apporter un aspect et une sensation qui est très difficile à accomplir dans Windows Forms. Naturellement, puisqu'il est si flexible, l'apparence des applications très stylées variera beaucoup d'une application à l'autre. Cela dit, il existe de très bons contrôles de tierce partie. Tous les suspects habituels ont des bibliothèques de contrôle pour WPF: Telerik, Infragistics, ComponentOne, Actipro, Devxpress pour n'en nommer que quelques-uns. Plus précisément, Actipro's Property Grid est très agréable. Il y a aussi un open source one que je n'ai pas évalué, donc je ne peux pas en parler. WPF peut également être "orienté" en appliquant des styles pré-compilés aux contrôles. Il y a des exemples de thèmes trouvés ici: http://wpfthemes.codeplex.com/. Enfin, les points forts de WPF ne sont pas entièrement réalisés jusqu'à ce que vous appreniez comment séparer la vue qui est dessinée et gérée par WPF et l'abstraction logique de la vue, appelée modèle de vue. Josh Smith a un excellent article sur ce modèle, connu sous le nom Model-View-ViewModel, ici: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx.

4

Je pense que Microsoft ne voyait aucun intérêt à inclure un contrôle PropertyGrid dans WPF car il est si trivial de créer le vôtre, et s'il créait le contrôle, il serait plus difficile de le styler.

Pour créer votre propre PropertyGrid, il suffit d'utiliser un <ListBox> avec un <ItemsTemplate> qui a un <DockPanel> contenant une <TextBlock> ancrée à gauche pour le nom de la propriété et un <ContentPresenter> pour l'éditeur de valeur, activez alors le regroupement sur la propriété Category.

Le seul code que vous devez écrire est le code qui reflète sur l'objet et crée la liste des propriétés.

Voici une idée approximative de ce que vous utilisez:

DataContext = 
    from pi in object.GetType().GetProperties() 
    select new PropertyGridRow 
    { 
    Name = pi.Name, 

    Category = (
     from attrib in pi.GetCustomAttributes(false).OfType<CategoryAttribute>() 
     select attrib.Category 
    ).FirstOrDefault() ?? "None", 

    Description = (
     from attrib in pi.GetCustomAttributes(false).OfType<DescriptionAttribute>() 
     select attrib.Description 
    ).FirstOrDefault(), 

    Editor = CreateEditor(pi), 

    Object = object, 
    }; 

La méthode createEditor serait simplement construire un éditeur approprié pour la propriété avec un liant à la valeur réelle de la propriété.

Dans le XAML, le <ListBox.ItemTemplate> serait quelque chose comme ceci:

<DataTemplate> 
    <DockPanel> 
    <TextBlock Text="{Binding PropertyName}" Width="200" /> 
    <ContentPresenter DataContext="{Binding Object}" Content="{Binding Editor}" /> 
    </DockPanel> 
</DataTemplate> 

Je vous laisse remplir le reste des détails.

Questions connexes