12
votes

Grille vs canvas

Je suis à la recherche d'opinion sur l'utilisation des panneaux en toile vs. Grid dans WPF. Je dois faire des formulaires d'entrée classiques qui ont essentiellement des présentations de grille, certains peuvent avoir de petits datagramrids à l'intérieur, des boîtes de groupe, mais toutes alignées dans la mise en page de la grille. J'ai du mal à utiliser un panneau de grille ou de toile pour toutes mes formes. La grille me donne une bonne structure; Je peux maintenir l'alignement des contrôles plus facilement. J'aurai une classe de base (qui hérite de la classe de fenêtre) pour toutes les fenêtres, afin que les designer de Visual Studio seront inutiles, car il a des problèmes pour ce type d'héritage et avec un panneau de grille, je n'ai même pas vraiment besoin de concepteur et je peux Définir le sizétocontent de la fenêtre afin que tout ira bien. Mais encore une fois avec la toile, j'ai la capacité de positionner des contrôles de n'importe quelle manière que j'aime, et cela ne bénéficie que de voir lorsque vous utilisez la toile.

Je n'ai pas eu d'expérience dans le document WPF pour prédire sur quels types de problèmes pourrais-je obtenir des demandes de clients sur la mise en page. Sur les formulaires Web, j'utilise parfois un positionnement absolu pour les formulaires, au cas où le client dispose d'une requête "spéciale", que de contrôler le pixel de contrôle à droite ou à gauche soit plus élevé, etc. Tout le monde a travaillé avec des clients exigeants savoir ce que je veux dire.

J'aimerais voir ce que vous pensez, quels sont les avantages et les inconvénients des deux membres de la mise en page de formulaire de formulaire de candidature? Pourquoi est-ce qu'un meilleur que l'autre? Des cas où un groupe spécial serait mauvais d'utilisation, et d'autres non? Quels sont les inconvénients d'un panneau à un autre? Quel panneau utiliseriez-vous?

merci


0 commentaires

5 Réponses :


16
votes

La toile est principalement destinée aux fonctionnalités de dessin personnalisées que toute autre chose. La grille est définitivement le meilleur choix disponible pour personnaliser votre mise en page.


3 commentaires

Je suis d'accord avec Csharperwithjava - est un élément beaucoup plus pratique pour la disposition générale de l'interface utilisateur.


Vous voudrez aller avec une mise en page à base de grille ou de panneau. Jetez un coup d'œil à la vue d'ensemble de MSDN du système de mise en page WPF: msdn.microsoft.com /en-us/library/ms745058.aspx


Voici un didacticiel pour vous faire démarreur avec des présentations de grille: wpftorial.net/gridlayout.html



2
votes

définitivement les grilles semblent être ce dont vous avez besoin pour vos besoins.

Je voudrais comparer des grilles aux tables HTML (très utile lorsqu'il est utilisé de manière appropriée), tandis que la toile ressemble davantage à un div. La différence étant que les grilles sont quelles tables doivent être en HTML et de même avec la toile VS de Div.

sur le thème des grilles, prenez le temps de définir vos lignes et des colonnesDéfinitions, plutôt que de mettre de la marge sur vos commandes pour positionner tout correctement. Vous le regretterez si vous ne le faites pas.


2 commentaires

Hein ... vous savez que l'utilisation de tables à des fins de présentation n'est pas recommandée, non?


Absolument, mais pour des raisons de cet exemple, je voulais que quelque chose à utiliser comme exemple, j'ai pensé que ce serait le meilleur exemple. Comme je l'ai mentionné, les grilles dans WPF sont quelles tables essayaient d'être en HTML.



3
votes

Vous pouvez devenir assez en profondeur avec la disposition réelle de la grille, la colonne / la rangée, la largeur, la hauteur, etc.

À mon avis, il serait plus facile de faire la mise en page des différents éléments sur une grille en contrôlant la rangée et la colonne TIMZZ que tout faire de sorte que tout est codé dur dans une toile. Cela facilitera également les choses s'ils décident de changer les résolutions plus tard sur la route.

de Adam Nathan's WPF Unleashed (p. 168):

imitant une toile avec grille Si vous laissez la grille avec une seule rangée et une colonne et définissez l'horizontallignement et VerticalAlignement de tous les enfants à des valeurs autres que s'étendant, les enfants sont ajoutés à la seule cellule comme une toile. Régler l'horizontallignement à gauche et Verticalalignment to Top est comme le réglage de la toile de réglage.Left et canvas.top à 0. Réglage L'horizontalalignement à droite et à la verticaleLignement en bas est comme le réglage Toile.right et canvas.bottom à 0. En outre, appliquer des valeurs de marge à chaque L'élément peut vous donner le même effet que de régler les propriétés attachées de toile au même valeurs.

Vous pouvez également être créatif avec le contenu de vos commandes dans la grille pour avoir un niveau de contrôle de la disposition plus fin.

Une toile serait bonne pour quelque chose comme une boîte de dialogue qui changera rarement la taille et que quelques contrôles ne contiennent que quelques contrôles, car il prendrait du temps de prendre du temps pour les jeter tout au fur et à mesure que le nombre augmente.

J'utilise personnellement des grilles moi-même. Il peut s'agir d'un peu plus de travail pour poser des choses au niveau du pixel, mais pour les 5% du temps nécessaire, cela vaut la peine d'abstraire beaucoup de tracas. Il est également agréable quand il est nécessaire de redimensionner des lignes et des colonnes à la volée, le plativité de la grille fait qu'un claquement.


0 commentaires

0
votes

Même si vous ne pouvez pas utiliser VS Designer, vous pouvez toujours utiliser un concepteur Visual XAML pour créer / modifier votre contenu de la grille.

L'un des principaux avantages UX de WPF / SL / XAML est la capacité de mise en page de «liquide» de type HTML. Même si vous n'en avez peut-être pas besoin avec votre design actuel, c'est clairement l'avenir et vaut bien la peine d'apprendre à la finesse.

Vérifiez l'excellente liste d'excellente la liste de Editeurs XAML


1 commentaires

Lien brisé, corrigez-vous



0
votes

J'irais avec une grille ou une sous-classe de grille spécialisée. Vous avez raison de voir l'héritage. Le concepteur Visual Studio In UWP, WPF génère un code de support pour la base et la sous-classe avec les mêmes noms de méthodes. Cela ne compile pas.

Puisque les génériques de pré-date, nous pouvons retourner aux méthodologies précédentes. L'un d'entre eux est une classe d'assistance. Chaque point de vue des implements ibaseview et possède une propriété ViewHelper ou ViewHelper . Enum ViewHelperoptions Peut être nécessaire. Si nécessaire, chacun des visiteurs peut utiliser l'héritage sans casser le concepteur visuel. Cela permet d'utiliser du code générique ainsi que du code de vue spécifique sans casser le modèle MVVM. Appelons-le à MVHVM alors que la viewHelper a connaissance de la viewHelper. Cela sépare en outre le V du VM.

La mise en œuvre complète peut bien nécessiter l'utilisation de activator.createInstance . Une autre considération est les constructeurs qui sont invoqués par le concepteur. Vous devez déplacer tout le code «Will-Crash-SI-NU-PAS-RUNING» dans une initialisation engendrée de (dire) l'événement chargé. Sinon, vous pouvez utiliser (UWP): xxx


0 commentaires