Barre de défilement dans la zone de liste ne fonctionne pas
J'ai un ListBox
qui affiche une liste de contrôles WPF.
Mon problème est que la barre de défilement verticale est de montrer, mais est désactivé, même quand il y a suffisamment d'éléments que l' ListBox
doit être déplacé.
Un autre, éventuellement, de fait, c'est que c'est contenue dans un Integration.ElementHost
.
WPF noobie, Jim
Voici le code XAML pour le ListBox
:
//for brevity I removed the Margin and Tooltip attributes
<Grid x:Class="Xyzzy.NoteListDisplay"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Name="stackPanel" Orientation="Vertical"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<StackPanel Orientation="Horizontal">
<CheckBox Name="AllRecent" IsChecked="False" >View All Recent</CheckBox>
<CheckBox Name="AscendingOrder" IsChecked="False">Descending Order</CheckBox>
<Button Name="btnTextCopy" Click="btnCopyText_Click">Copy All</Button>
</StackPanel>
<ListBox Name="NoteList"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Visible">
</ListBox>
</StackPanel>
</Grid>
Et le code XAML pour le contrôle affiché dans chaque ListBox
élément:
<UserControl x:Class="Xyzzy.NoteDisplay"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock Name="Heading" FontSize="10">Note Heading</TextBlock>
<Button Name="btnCopyText" Height="20" FontSize="12"
Click="btnCopyText_Click">Copy
</Button>
</StackPanel>
<TextBlock Name="Body" FontSize="14">Note Body</TextBlock>
</StackPanel>
</Grid>
</UserControl>
OriginalL'auteur Jim Reineri | 2009-08-12
Vous devez vous connecter pour publier un commentaire.
J'ai eu des problèmes avec la barre de défilement de la visibilité lors de l'utilisation d'un
StackPanel
. Je pense que c'est parce que laStackPanel
est toujours comme ça que ça doit être pour contenir tous ses enfants. Essayez de la réorganisation de la mise en page à supprimer leStackPanel
(utiliser unGrid
à la place) et voir si cela aide.Je pense que c'est juste la façon dont le StackPanel œuvres. Dans votre cas, le StackPanel était aussi grand que la zone de liste devait être sans défilement, puis le StackPanel est "coupée" en bas.
Oui, le problème est avec StackPanel et le problème résolu par la Grille. Merci @JohnMyczek
Ideed - j'ai eu le même problème et je l'ai résolu en gestion de supprimer le stackpanel
Si la grille de solution ne fonctionne pas à la fois, ensemble
<RowDefinition Height="*" />
pour la ligne contenant la zone de liste.OriginalL'auteur John Myczek
Vous avez juste besoin d'introduire
Height
propriété, comme ceci:OriginalL'auteur Mert Akcakaya
Heya, je soupçonne ce qui se passe, c'est que votre zone de liste est en pleine expansion assez pour chaque élément, cependant la zone de liste est en fait en train de disparaître du fond du Contenant de Contrôle.
La ListBox en fait arrêter correctement ou c'est juste qu'il semble disparaître? Essayez de vous fixer un MaxHeight sur la liste et voir si ça fait de la barre de défilement apparaît. Vous devriez être en mesure de définir la VerticalScrollBarVisibility sur Auto pour que ça ne s'affiche que lorsque nécessaire.
Rach a été dans mon cas. Le contrôle élargi délié et simplement disparu au-delà de mon contrôle limites. J'ai utilisé la ListBox dans une grille de ligne/colonne avec la Largeur/Hauteur de la valeur Auto. Une fois qu'ils ont été mis à '*' la zone de liste commencé à se comporter.
OriginalL'auteur
Si la zone de liste est à l'intérieur d'un StackPanel, essayez ces étapes pour votre ListBox
Qui devrait forcer la barre de défilement pour afficher.
OriginalL'auteur AustinTX
C'est assez tard, mais toute personne utilisant la zone de liste est préférable de ne pas l'avoir dans un StackPanel. Une fois que j'ai activé le contrôle parental de ma Listbox à partir StackPanel à DockPanel avec LastChildFill=True (Où la zone de liste été le dernier contrôle), ma barre de défilement a parfaitement fonctionné.
Espère que cela aide quelqu'un qui a le problème n'est pas résolu par la réponse ci-dessus.
OriginalL'auteur Rachael
Une autre solution à ce problème qui fonctionne bien est de mettre un
ScrollViewer
autour de laStackPanel
.OriginalL'auteur AJH
Une autre solution avec une modification de Dave est d'utiliser le ScrollViewer. Vous ne être capable de faire défiler en plaçant votre souris sur la ScrollView de la barre de Défilement. Je l'utilise de cette façon parce que je n'aime pas comment ListBox sauts à partir d'un article à l'autre et, parfois, les éléments manquants à partir du Haut. Un peu dur sur les yeux aussi. J'aime ScrollViewer de défilement lisse.
OriginalL'auteur VcDeveloper
Je viens de tomber sur le même problème, et voici un peu de code démo sur le projet de code qui indique visuellement.
(Si vous voulez vous épargner le temps d'écrire le code pour voir les différences de vous-même 🙂 )
http://www.codeproject.com/Tips/659066/ListBox-and-Panels-in-WPF
OriginalL'auteur Noctis