2010-12-06 22 views
2

Je vais devoir générer dynamiquement une matrice carrée de "boîtes" (par exemple 2x2, 3x3 etc.), contenant chacune une zone de texte et un bouton. Ces boîtes et le texte seront également redimensionner en fonction de la taille de la fenêtre. Dois-je aborder ce problème en utilisant stackPanel, datagrid ou dockpanel et quels sont leurs avantages ou leurs inconvénients? Appréciez pour toute suggestion.StackPanel vs DataGrid vs DockPanel dans WPF

Développé par WPF, VS2010.

Répondre

6

Je voudrais l'approcher avec un contrôle de grille. Les colonnes et les lignes à l'intérieur de la grille seront automatiquement dimensionnées en fonction de la taille de la grille si vous le dites également. En outre, la grille remplit automatiquement la zone dans laquelle ils sont placés, ce qui ressemble à ce que vous recherchez.

Les panneaux empilés ne sont pas très flexibles. Le tout simplement mettre un élément à côté d'un autre sans dimensionnement automatique.

Le panneau de la station d'accueil est bon si vous avez du contenu qui doit être fixé sur le côté et un autre contenu pour le centre.

6

Faites un butin sur le panneau UniformGrid.

+0

UniformGrid ne peut pas prendre plus d'un enfant, contrairement à la grille ... – KMC

+1

_UniformGrid_ hérite panneau, comme _Grid_ et peut contenir un certain nombre d'enfants. –

2

Les empilements sont utiles lorsque vous avez une certaine quantité d'éléments que vous voulez aligner les uns avec les autres. Très simple à utiliser et efficace lors de l'ajout dynamique d'éléments, sa simplicité signifie qu'il n'a pas vraiment de capacités de redimensionnement. Les Dockpanels sont utiles lorsque vous placez et organisez plusieurs objets différents sur une fenêtre, en particulier lorsque vous ancrez des objets en haut, en bas, à gauche, à droite, puis vous vous adaptez à l'espace restant au centre (j'ai récemment découvert qu'ils sont assez pratique lorsqu'il est utilisé en conjonction avec des expandeurs). Aucun inconvénient réel, pourrait bien être efficace pour vous. Si vous n'avez pas besoin de changer dynamiquement la mise en page, je suggérerais que les contrôles de la grille seraient votre meilleur pari, car vous pouvez diviser la grille dans la matrice dont vous avez besoin. L'utilisation d'un astérisque (*) pour chaque côté signifierait que toutes les cases seraient redimensionnées de manière égale pour correspondre à la fenêtre que vous avez. La fonctionnalité est limitée mais par le son de vos exigences une grille le couvrirait.

Un tutoriel utile sur mise en page se trouve here.