2013-02-13 20 views
5

Come altri, ho un DataGrid che non mostra barre di scorrimento. Quello che penso sia unico per la mia situazione è che non vedo uno StackPanel da nessuna parte nell'albero visivo o logico. Sto usando WPF Inspector per visualizzare gli alberi. Ho provato vari suggerimenti per impostare l'altezza e la larghezza delle colonne e delle righe contenenti Grid senza successo. Sono certo che c'è qualcosa che mi manca che consente al contenuto di estendersi oltre l'area visibile ma non posso dire quale sia ancora. Qualsiasi aiuto sarebbe apprezzato. Questa applicazione è un Prisma WPF con app MEF e DataGrid si trova all'interno di un controllo utente che si trova in una regione di Prisma.WPF DataGrid non mostra barre di scorrimento ed esaurisce l'area visibile

Shell Finestra XAML:

<Window> 
    <Grid x:Name="GridOuterShell"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 

    <ribbon:Ribbon Grid.Row="0" > 
     ... 
    </ribbon:Ribbon> 

    <Grid x:Name="GridShellContent" Grid.Row="1"> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="350" MinWidth="300"/> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 


     <local:RegionBorderControl Grid.Row="0" Grid.Column="0" Grid.RowSpan="3" Margin="2,2,8,2" RegionName="{Binding MainRegionDisplayName}" 
           Style="{DynamicResource RegionBorderControlStyle}"> 
     <ContentControl prism:RegionManager.RegionName="MainRegion" 
         VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"/> 

     </local:RegionBorderControl> 


     <GridSplitter Grid.Row="0" Grid.Column="1" Grid.RowSpan="3" HorizontalAlignment="Center" VerticalAlignment="Stretch" 
        Width="3" ShowsPreview="True" ResizeDirection="Columns" /> 

     <local:RegionBorderControl Grid.Row="0" Grid.Column="2" RegionName="{Binding RightTopRegionDisplayName}" 
           Style="{DynamicResource RegionBorderControlStyle}"> 
     <ContentControl prism:RegionManager.RegionName="RightTopRegion" 
         VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"/> 

     </local:RegionBorderControl> 

     <GridSplitter Grid.Row="1" Grid.Column="3" HorizontalAlignment="Stretch" VerticalAlignment="Center" 
        Height="3" ShowsPreview="true" ResizeDirection="Rows" ResizeBehavior="PreviousAndNext" Background="Silver"/> 

     <local:RegionBorderControl Grid.Row="2" Grid.Column="2" RegionName="{Binding RightBottomRegionDisplayName}" 
           Style="{DynamicResource RegionBorderControlStyle}"> 
      <ContentControl prism:RegionManager.RegionName="RightBottomRegion"/> 

     </local:RegionBorderControl> 

    </Grid> 

    <StatusBar Grid.Row="2"> 
     ... 
    </StatusBar> 

    </Grid> 
</Window> 

UserControl XAML:

<UserControl> 

<Grid x:Name="GridMain"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition /> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 

     <DockPanel Grid.Row="0" LastChildFill="False" HorizontalAlignment="Stretch" Width="Auto" > 
      <ToolBar x:Name="tbToolBar" DockPanel.Dock="Left" Background="{x:Null}"> 
       ... 
      </ToolBar> 
     </DockPanel> 

     <DataGrid AutoGenerateColumns="False" Grid.Row="2" Name="DataGridList" ItemsSource="{Binding MyItems}" IsReadOnly="True" CanUserResizeRows="False" SelectionMode="Single" 
        SelectedItem="{Binding Path=SelectedDataGridRecord, Mode=TwoWay}" Style="{StaticResource DataGridDefault}" > 
      <DataGrid.Columns> 
       ... 
      </DataGrid.Columns> 
     </DataGrid> 

    </Grid> 

risposta

14

Hai la DataGrid di fila griglia dove il RowDefinition altezza è automatica in modo che la griglia verrà misurata con un'altezza infinita e essere disposti su DesiredSize.Height e non mostrare mai barre di scorrimento. Sembra che la griglia dovrebbe essere nella riga 1 o rendere l'altezza della riga 2 come * invece di auto.

+0

Questo ha risolto il mio problema. Grazie Andrew. Avrei giurato di averlo provato. Mi spiace per aver postato una supervisione così ovvia, ma ero abbastanza certo che fosse qualcosa del genere poiché nient'altro aveva senso. – David