2009-11-02 10 views
4

J'ai un Expander que je veux avoir un ListBox dans Quand le j'ouvre le Expander, le ListBox se développe juste à côté de l'écran (plutôt que d'étendre pour remplir ce qui est disponible et le défilement) .WPF -. Scrolling Listbox dans un Expander

Voici mon XAML:

<DockPanel Margin="266.25,0,455,12" Name="dockPanel1"> 
    <StackPanel> 
     <Expander Header="expander1" Name="expander1" Width="150" HorizontalAlignment="Left"> 
      <Grid> 
       <Label>Testing</Label> 
       <ScrollViewer> 
        <ListBox Name="lstBox" FontSize="14" SelectionChanged="lstBox_SelectionChanged" /> 
       </ScrollViewer> 
      </Grid> 
     </Expander> 
     <Expander Header="expander2" Name="expander2" Width="150" HorizontalAlignment="Left"> 
      <Grid > 

      </Grid> 
     </Expander> 
    </StackPanel> 
</DockPanel> 

Lorsque Expander1 est ouvert, alors il se développe juste à la taille de l'ListBox (hors de l'écran). Si je mets une taille sur la grille (Height="275"), alors elle ne se redimensionne pas avec la fenêtre. Je veux qu'il s'étire à la taille de la fenêtre, mais pas plus. Y-a-t-il un moyen de faire ça?

Répondre

2

Vous devez définir la propriété Height de ScrollViewer sinon elle aura la même taille que son enfant. Voici quelques mises à jour XAML:

<DockPanel> 
    <StackPanel> 
     <Expander Header="expander1" Width="150" HorizontalAlignment="Left"> 
      <StackPanel> 
       <Label>Testing</Label> 
       <ScrollViewer Height="75"> 
        <ListBox> 

        </ListBox> 
       </ScrollViewer> 
      </StackPanel> 
     </Expander> 
     <Expander Header="expander2"> 
     </Expander> 
    </StackPanel> 
</DockPanel> 
+0

Mais comment puis-je définir cela comme étant la hauteur de la fenêtre? Puis-je faire des liaisons de données pour que cela se produise? – Vaccano

+0

Vous pourriez faire une liaison avec une syntaxe comme celle-ci: {Binding ElementName = Window1, Path = Height} mais cela conduirait à une valeur trop grande. Je pense plutôt que vous aurez besoin d'une propriété à votre fenêtre qui est Height - SomeOffset. –

+1

Aussi, j'imagine qu'il existe une meilleure solution que ce que je viens de suggérer. –