2010-07-04 21 views
1

J'ai une grille avec deux lignes et un GridSplitter. Dans la première ligne, j'ai un StackPanel qui contient le DataPager et DataGrid. Dans la deuxième rangée, le contrôle de l'expanseur est aligné verticalement sur le bas et la direction vers le haut augmente. L'idée que le DataGrid occupera tout l'espace (étirement vertical) des deux lignes mais lorsque l'en-tête Expander sera cliqué, il s'étendra vers le haut et DataGrid rétrécira automatiquement.DataGrid SL4 avec Datapager et Gridsplitter

Mais ce n'est pas le cas. Lorsque je clique sur l'expandeur, il se développe mais l'augmentation de la taille de la page au lieu de DataGrid (Row 0) se rétrécit vers le haut. Tout le monde sait Comment je peux y parvenir? Mon code est comme ci-dessous. J'ai essayé en mettant le ScrollViewers au niveau de DataGrid, au niveau de StackPanel et également au niveau de grille aussi mais sans succès.

<Grid x:Name="contentGrid" HorizontalAlignment="Stretch" Grid.Column="1"> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition/> 
       </Grid.RowDefinitions> 
       <tools:GridSplitter x:Name="rowSplitter" Grid.Row="1" VerticalAlignment="Top" HorizontalAlignment="Stretch"/> 
       <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
        <StackPanel Grid.Row="0" Orientation="Vertical" VerticalAlignment="Stretch" > 
        <StackPanel Orientation="Horizontal" Width="auto" Height="30"> 
         <TextBlock Text="Search" Margin="20,10,0,0" TextAlignment="Center" VerticalAlignment="Center" Height="25"/> 
         <TextBox Width="200" Margin="5,0,0,0" x:Name="txtSearch" Height="25"/> 
         <ComboBox x:Name="cboFilter" SelectedIndex="0" SelectedValuePath="Name" VerticalAlignment="Center" Height="25"> 
          <ComboBoxItem Name="Code">Line No</ComboBoxItem> 
          <ComboBoxItem Name="Description1">Heading</ComboBoxItem> 
          <ComboBoxItem Name="Description2">Happy Text</ComboBoxItem> 
          <ComboBoxItem Name="PromotionType">Promotion Type</ComboBoxItem> 
         </ComboBox> 
         <CheckBox x:Name="chkIsGrouping" Margin="10,5,0,0" Content="Enable Grouping" Checked="chkIsGrouping_Checked"/> 
         </StackPanel> 
        <sdk:DataPager Height="25" Name="dataPager1" Source="{Binding ElementName=productDomainDataSource, Path=Data}" /> 

        <sdk:DataGrid AutoGenerateColumns="False" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch" ItemsSource="{Binding ElementName=productDomainDataSource, Path=Data}" Name="productDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" SelectionChanged="productDataGrid_SelectionChanged" > 
         <sdk:DataGrid.Columns> 
          <sdk:DataGridTextColumn x:Name="codeColumn" Binding="{Binding Path=Code}" Header="Code" Width="SizeToHeader" /> 
          <sdk:DataGridTextColumn x:Name="description1Column" Binding="{Binding Path=Description1}" Header="Description 1" Width="SizeToHeader" /> 
          <sdk:DataGridTextColumn x:Name="description2Column" Binding="{Binding Path=Description2}" Header="Description 2" Width="SizeToHeader" /> 
          <sdk:DataGridTextColumn x:Name="productIDColumn" Binding="{Binding Path=ProductID, Mode=OneWay}" Header="Product ID" IsReadOnly="True" Width="SizeToHeader" Visibility="Collapsed" /> 
          <sdk:DataGridTextColumn x:Name="promotionIDColumn" Binding="{Binding Path=PromotionID}" Header="Promotion ID" Width="SizeToHeader" Visibility="Collapsed"/> 
          <sdk:DataGridTextColumn x:Name="promotionTypeIDColumn" Binding="{Binding Path=PromotionTypeID}" Header="Promotion Type ID" Width="SizeToHeader" Visibility="Collapsed" /> 
          <sdk:DataGridTextColumn x:Name="retailPriceColumn" Binding="{Binding Path=RetailPrice}" Header="Retail Price" Width="SizeToHeader" /> 
          <sdk:DataGridTextColumn x:Name="retailPriceUnitColumn" Binding="{Binding Path=RetailPriceUnit}" Header="Retail Price Unit" Width="SizeToHeader" /> 
          <sdk:DataGridTextColumn x:Name="templateIDColumn" Binding="{Binding Path=TemplateID}" Header="Template ID" Width="SizeToHeader" /> 
          <sdk:DataGridTextColumn x:Name="wasPriceColumn" Binding="{Binding Path=WasPrice}" Header="Was Price" Width="SizeToHeader" /> 
          <sdk:DataGridTextColumn x:Name="wasPriceUnitColumn" Binding="{Binding Path=WasPriceUnit}" Header="Was Price Unit" Width="SizeToHeader" /> 
         </sdk:DataGrid.Columns> 
        </sdk:DataGrid> 

       </StackPanel> 
       </ScrollViewer> 
       <expandertoolkit:Expander x:Name="Expander1" Margin="0,10,0,0" Grid.Row="1" VerticalAlignment="Bottom" 
         ExpandDirection="Up" 
         HeaderTemplate="{StaticResource DTHeader}" 
         ContentTemplate="{StaticResource DTContent}"> 

        </expandertoolkit:Expander> 
      </Grid> 

Répondre

0

Normalement, si vous voulez une ligne (dire la rangée du bas) pour réduire une autre (dire la rangée supérieure), la rangée du bas est de taille automatique et le haut est Star taille. Le problème est que les lignes de taille automatique s'ajusteront à leur contenu et que la taille de l'étoile capturera simplement le reste, mais si rien ne restreint la taille globale, les lignes de taille automatique croissent et les lignes de taille étoile prendre tout ce qu'ils peuvent obtenir pour s'adapter à leur contenu.

Vous devez définir la taille globale du contrôle, où il est utilisé, si vous voulez le comportement de réduction/croissance que vous mentionnez.

S'il vous plaît noter que je ne pouvais pas comprendre pourquoi vous avez un Gridsplitter dans cet exemple en premier lieu, donc il se peut que je manque quelques détails.