2016-07-26 7 views
0

Ich habe eine ScrollViewer dieWarum ScrollViewer die Rasterzeilenhöhe in WPF überschreibt?

<ScrollViewer> 
    <Grid HorizontalAlignment="Stretch"> 
     <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <GroupBox Grid.Row="0" Grid.Column="0"      
        Header="XYZ" 
        VerticalAlignment="Stretch"  
        HorizontalAlignment="Stretch" 
        Margin="0,10,0,0" 
        Width="Auto" MinWidth="160" 
        BorderThickness="0" 
        Style="{StaticResource MyGroupBoxStyle}"> 
     <ListBox Name="lstMentorGroups" IsSynchronizedWithCurrentItem="True"      
        ItemsSource="{Binding Path=MyCollection}" 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Stretch" 
        Style="{StaticResource MyListBoxStyle}"> 
      <ListBox.ItemTemplate> 
      <DataTemplate > 
       <TextBlock Text="{Binding Path=Name}"/> 
      </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     </GroupBox> 

     <GroupBox Grid.Row="1" Grid.Column="0" MinWidth="160"   
        Header="ABC" Margin="0,10,0,0" 
        VerticalAlignment="Stretch" 
        HorizontalAlignment="Stretch" 
        BorderThickness="0" 
        Style="{StaticResource MyGroupBoxStyle}"> 
     <ListBox ItemsSource="{Binding Path=List1, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
        HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
        Style="{StaticResource MyListBoxStyle}" Margin="0,0,5,0"> 
      <ListBox.ItemTemplate> 
      <DataTemplate > 
       <TextBlock Text="{Binding Path=Prop1}"/> 
      </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     </GroupBox> 
    </Grid> 
</ScrollViewer> 

Aber während der Laufzeit wird durch die darin enthaltenen listbox benötigt volle Höhe 1. Gruppe Feld '*' ein Grid mit zwei Reihen von Höhe enthält, die es überschreibt Rastermaßhöhe bedeutet * auf Auto

Es funktioniert gut, wenn ich scrollviewer nicht verwende, gibt es 50-50% Höhe für jedes Gruppenfeld.

Antwort

0

Als Grid in ScrollViewe r platziert ist, so dass es ganzen Platz in Anspruch nimmt wie viel es Kontrollen erfordert. Und ich möchte keine vertikale Bildlaufleiste anzeigen.

Ich habe gerade Grid MaxHeight zu ScrollViewer Actual

MaxHeight="{Binding ElementName=ScrollViewer, Path=ActualHeight}"

0

Sie müssen die Höhe des Rasters festlegen, wenn es sich im ScrollViewer befindet, andernfalls wird das Raster so hoch wie nötig sein, was bedeutet, dass das Listenfeld im Raster eine unbegrenzte Höhe erhält, um seine Elemente anzuzeigen.

+0

Ich will nicht die Höhe Grid geben, warum ich ist Scroll bin mit –

0

Um sicherzustellen, dass die beiden Reihen die gleiche Höhe nehmen, sollten Sie die SharedSizeGroupe So verwenden, was Sie tun sollen, ist:

<ScrollViewer> 
<Grid HorizontalAlignment="Stretch" Grid.IsSharedSizeScope="True"> 
    <Grid.RowDefinitions> 
    <RowDefinition SharedSizeGroup="A" /> 
    <RowDefinition SharedSizeGroup="A" /> 
    </Grid.RowDefinitions> 
    <GroupBox Grid.Row="0" Grid.Column="0"      
       Header="XYZ" 
       VerticalAlignment="Stretch"  
       HorizontalAlignment="Stretch" 
       Margin="0,10,0,0" 
       Width="Auto" MinWidth="160" 
       BorderThickness="0" 
       Style="{StaticResource MyGroupBoxStyle}"> 
    <ListBox Name="lstMentorGroups" IsSynchronizedWithCurrentItem="True"      
       ItemsSource="{Binding Path=MyCollection}" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       Style="{StaticResource MyListBoxStyle}"> 
     <ListBox.ItemTemplate> 
     <DataTemplate > 
      <TextBlock Text="{Binding Path=Name}"/> 
     </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
    </GroupBox> 

    <GroupBox Grid.Row="1" Grid.Column="0" MinWidth="160"   
       Header="ABC" Margin="0,10,0,0" 
       VerticalAlignment="Stretch" 
       HorizontalAlignment="Stretch" 
       BorderThickness="0" 
       Style="{StaticResource MyGroupBoxStyle}"> 
    <ListBox ItemsSource="{Binding Path=List1, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
       HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
       Style="{StaticResource MyListBoxStyle}" Margin="0,0,5,0"> 
     <ListBox.ItemTemplate> 
     <DataTemplate > 
      <TextBlock Text="{Binding Path=Prop1}"/> 
     </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
    </GroupBox> 
</Grid> 

+0

ich Ihre Lösung versucht, aber es funktionierte nicht. Dann habe ich eine andere Lösung dafür gefunden. –

Verwandte Themen