2012-06-04 3 views
3

J'ai un WPF TabControl qui affiche UserControl s. Certains UserControl s sont plus grands que le TabControl et ont été coupés, donc j'ai modifié son modèle en enveloppant le ContentPresenter dans un ScrollViewer avec HorizontalScrollBarVisibility et VerticalScrollBarVisibility mis à "Auto".Dépassement de dépassement de contenu dans WPF TabControl

Le problème avec cette solution est que UserControl par rapport taille s hébergé par le TabControl obtient maintenant thousaunds de pixels plus larges que sont censés parce que le ScrollViewer ne limite pas leur taille.

Comment puis-je faire défiler le dépassement de contenu dans un WPF TabControl sans que son contenu de taille relative ne prenne de l'ampleur?

Répondre

3

Je fini par utiliser la solution décrite dans ce billet de blog:

When to scroll? The problem of infinite-sized UI elements inside a ScrollViewer

Pour résumer l'idée de base:

Ainsi, la solution semble assez simple: nous pouvons dire ScrollViewer d'avoir une double comportement:

  • Si la taille de l'écran disponible est plus petit que certains au moins, permettre le défilement, et définir la taille disponible pour la le contenu doit être cette taille minimale. Si la taille de l'écran disponible est supérieure au minimum, se comporter comme un conteneur ordinaire qui donne à ses enfants seulement l'espace dont il dispose sur l'écran.

+0

Voici le lien de wayback machine au cas où le lien ci-dessus meurt: http://web.archive.org/web/20121123092324/http://noamlewis.wordpress.com/2012/01/23/when-to-scroll-the -problem-of-infini-sized-ui-elements-inside-a-scrollviewer –

0

Vous devez fixer la hauteur ou la largeur

ou

essayer de mettre votre contrôle de contenu dans ScrollViewer

+0

La hauteur et la largeur fixes ne sont pas une option. Le contenu doit rétrécir et croître avec la taille disponible. Comme indiqué dans ma question, j'ai déjà essayé de tout emballer dans un ScrollViewer, mais je n'ai pas le comportement que je veux. –