2009-08-16 5 views
2

Le scrollviewer ci-dessous ne fonctionne pas. J'ai essayé tout ce que je pouvais trouver sur ce site et au-delà: incorporer le scrollviewer dans une grille, intégrer les enfants de ScrollViewer dans une grille, incorporer le Scrollviewer dans un StackPanel avec une hauteur fixe, régler/lier la hauteur du scrollviewer, ... Qui me montre le chemin du retour à la santé mentale ??ScrollViewer ne défile pas

Mind, le XAML ci-dessous est juste pour montrer comment la fenêtre est structurée. J'ai enlevé toutes les données.

<Window> 
    <Window.Resources> 
     <DataTemplate x:Key="ColoringLabels"> 
     </DataTemplate> 
    </Window.Resources> 
    <DockPanel> 
     <StatusBar DockPanel.Dock="Top"> 
      <StatusBarItem> 
      </StatusBarItem> 
     </StatusBar> 
     <StackPanel Orientation="Vertical"> 
      <TextBox/> 
      <Button>Hello World!</Button> 
      <ScrollViewer> 
       <StackPanel Orientation="Vertical"> 
        <Label>Hola Mundo!</Label> 
        <ListBox ItemsSource="{Binding}"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <ListBox ItemsSource="{StaticResource ColoringLabels}"/> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
        <ListBox Source="{Binding}"ItemTemplate="{StaticResource ColoringLabels}"/> 
       </StackPanel> 
      </ScrollViewer> 
      <TextBlock/> 
     </StackPanel> 
    </DockPanel> 
</Window> 

EDIT:

Je l'ai résolu en changeant le XAML à:

<Window> 
    <Window.Resources> 
     <DataTemplate x:Key="ColoringLabels"> 
     </DataTemplate> 
    </Window.Resources> 
    <DockPanel> 
     <StatusBar DockPanel.Dock="Top"> 
      <StatusBarItem> 
      </StatusBarItem> 
     </StatusBar> 
     <ScrollViewer> 
      <StackPanel Orientation="Vertical"> 
       <TextBox /> 
       <Button>Hello World!</Button> 
        <StackPanel Orientation="Vertical"> 
         <Label>Hola Mundo!</Label> 
         <ListBox ItemsSource="{Binding}"> 
          <ListBox.ItemTemplate> 
           <DataTemplate> 
            <ListBox ItemsSource="{StaticResource ColoringLabels}"/> 
           </DataTemplate> 
          </ListBox.ItemTemplate> 
         </ListBox> 
         <ListBox Source="{Binding}"ItemTemplate="{StaticResource ColoringLabels}"/> 
        </StackPanel> 
       <TextBlock/> 
      </StackPanel> 
     </ScrollViewer> 
    </DockPanel> 
</Window> 

Pourquoi travaille maintenant ??? Peut-être parce que le ScrollViewer arrive maintenant à remplir la position LastChild du DockPanel ???

+0

J'ai le même problème maintenant et j'ai essayé votre solution. Mais pourquoi la mienne ne fonctionne pas? Une fois que j'utilise ma listbox avec un scrollviewer, ça devient foiré. –

Répondre

4

essayer ce

<Window x:Class="WpfApplication7.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="308" Width="527"> 
    <Window.Resources> 
     <DataTemplate x:Key="ColoringLabels"> 
     </DataTemplate> 
    </Window.Resources> 
    <DockPanel LastChildFill="True"> 
     <StackPanel DockPanel.Dock="Top" HorizontalAlignment="Stretch"> 
      <StatusBar> 
       <StatusBarItem> 
       </StatusBarItem> 
      </StatusBar> 
      <TextBox/> 
      <Button>Hello World!</Button> 
     </StackPanel> 
     <ScrollViewer> 
      <StackPanel Orientation="Vertical" > 
       <Label>Hola Mundo!</Label> 
       <ListBox ItemsSource="{Binding}"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <ListBox /> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
       <ListBox /> 
      </StackPanel> 
     </ScrollViewer> 
     <TextBlock/> 
    </DockPanel> 

</Window> 

EDIT
Votre nouveau code fonctionne juste becouse taille de ScrollViewer est fixé maintenant (il est de remplir la partie libre de l'écran), et il ne se développe pas en dehors de la fenêtre quand il est contenu est de plus en plus ..

+0

Merci pour tout le travail que vous y mettez! Je vous ai suivi une suggestion plus tôt et ajouté la hauteur au premier stackpanle sous le scrollviewer (rien ne s'est passé) et a donné de la hauteur à la liste. Cela a fonctionné, mais n'a pas produit l'effet désiré. J'ai placé le Scrollviewer plus haut dans la hiérarchie et cela a produit ce que je cherchais. – Dabblernl

+0

Vous êtes bienvenu, j'ai édité le post, trouvez la réponse de votre dernier questin. –

1

Essayez de donner de la hauteur à votre ListBox ou StackPanel dans ScrollViewer, défile ScrollViewer quand il est contenu est plus grand que sa taille dans votre cas lorsque vous ajoutez des éléments à listbox, la hauteur de listbox ne se développe pas et listbox défile

Questions connexes