2013-02-13 21 views
5

Podobnie jak inne mam DataGrid, który nie pokazuje paski przewijania. To, co wydaje mi się wyjątkowe w mojej sytuacji, to to, że nie widzę żadnego StackPanelu w drzewie wizualnym ani logicznym. Korzystam z Inspektora WPF do przeglądania drzew. Próbowałem różnych sugestii, aby ustawić wysokość i szerokość kolumn i wierszy zawierających Grid bez powodzenia. Jestem pewien, że jest coś, czego mi brakuje, to pozwala, by treść wykraczała poza widoczny obszar, ale nie mogę powiedzieć, co to jest. Każda pomoc będzie doceniona. Ta aplikacja jest aplikacją WPF Prism z aplikacją MEF, a DataGrid znajduje się w UserControl, który znajduje się w regionie Prism.WPF DataGrid nie pokazuje pasków przewijania i kończy się widoczny obszar

Shell Okno 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> 

Odpowiedz

14

Masz DataGrid w rzędzie siatki gdzie RowDefinition wysokość to auto więc siatka będzie mierzony nieskończoną wysokość i być dostosowane do jego DesiredSize.Height i nigdy nie pokazywać pasków przewijania. Wygląda na to, że kratka powinna znajdować się w rzędzie 1 lub ustawić wysokość wiersza 2 na * zamiast automatycznego.

+0

To rozwiązało mój problem. Dzięki, Andrew. Mógłbym przysiąc, że próbowałem tego. Przepraszam za opublikowanie tak oczywistego niedopatrzenia, ale byłem prawie pewien, że to coś takiego, ponieważ nic innego nie miało sensu. – David