Scrollbar in ListView

qde

Mitglied
Hallo,
ich sitze grade an meinem ersten WPF-Projekt und komme nicht mehr weiter. Ich habe eine ListView, die einfach keine Scrollbar bekommt. Mein XAML-Code sieht so aus:

Code:
 <StackPanel Margin="8">
        <StackPanel>
        <Label HorizontalAlignment="Center">
        <TextBlock Name="AppTitle" FontSize="18" FontFamily="Verdana" Foreground="Blue" Width="120">Versandbox</TextBlock>   
        </Label>
            <Label HorizontalAlignment="Right" Margin="0,0,10,0">Aktualisierung in ... Minuten</Label>
        <Button Width ="100" HorizontalAlignment="Right" Margin="0,0,10,10" >
            Aktualisieren
        </Button>
        
        
        
        <ListView Grid.Row="1" Name="VersandListbox"
            ItemsSource="{Binding Source={StaticResource versandListBox}}" SelectionMode="Single" MinWidth="1024" MinHeight="900" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" IsSynchronizedWithCurrentItem="True">

 <ListView.View>
                <GridView>
                    <GridViewColumn />
....
</Gridview>
</ListView.View>

  </StackPanel>
</StackPanel>

Für Hilfe wäre ich sehr dankbar!
 
Du bist das falsch angegangen. Das Problem ist, dass sich das StackPanel in der Größe und der Breite dem Inhalt anpasst. Dadurch geht dir in deinem Fall auch die Scrollbar verloren.

Was du also machen kannst:
  1. Ersetze das erste StackPanel durch ein DockPanel
  2. Nimm deine ListView aus dem zweiten StackPanel heraus und setze dem zweiten StackPanel die Eigenschaft DockPanel.Dock auf "Top"
Damit sollte dein Scrollbar wieder da sein. Ach ja, bei der ListView kannst du die Attached Property Grid.Row herausnehmen, da es an dieser Stelle eher nicht sinnvoll ist, zumal eventuell gar kein Grid mehr vorhanden ist.

Hier nochmal zur Veranschaulichung wie ich den Aufbau meine:
Code:
<DockPanel x:Name="ParentDock" Margin="8" LastChildFill="True">
    <StackPanel DockPanel.Dock="Top">
        <Button Content="Test"/>
        <Button Content="Test2"/>
    </StackPanel>
    <ListView x:Name="DemoBox">
            <ListView.View>
                <GridView>
                    <GridViewColumn/>
                    <GridViewColumn/>
                    <GridViewColumn/>
                </GridView>
            </ListView.View>
        </ListView>
</DockPanel>
 
Hallo Norbert!
Vorerst danke für deine Antwort. Habe gerade das gleiche Problem gehabt.
Aber zum Verständnis:
ListView sollte also nicht in ein StackPanel eingebettet werden, weil das StackPanel sich mit der Höhe des ListViews ausdehnt (im Falle von Orientation="Vertical").
Aber was macht man, wenn ein Fenster zB folgendermaßen aufgebaut ist:
Links befindet sich ein Navigationsbereich wie in Outlook, oben eine Werkzeugleiste und den restlichen Datenbereich teilen sich untereinander eine Grafik und 2 Tabellen. Diese 3 Datenbereiche sollen die Fensterhöhe gleichmäßig aufteilen.
Ich würde es aus dem Bauch heraus so aufbauen:

Code:
<DockPanel>
   <StackPanel x.Name="Linker_Navibereich" DockPanel.Dock="Left"  Orientation="Vertical">....</StackPanel>
   <StackPanel x.Name="Werkzeugbereich_oben" DockPanel.Dock="Top" Orientation="Horizontal">...</StackPanel>
   <StackPanel x.Name="eigentlicher_Datenbereich" DockPanel.Dock="Bottom" Orientation="Vertical">
      <Border x.Name="Grafik" >...hier kommt die Grafik...</Border>
      <ListView x.Name="Tabelle_1" ...>
      <ListView x.Name="Tabelle_2"...>
   </StackPanel>
</DockPanel>

Oder wäre es vernünftiger, für den Datenbereich ein Grid zu verwenden?
Danke im Voraus.
Liebe Grüße
Tommi
 
Zurück