2010-07-04 56 views
1

我有一個網格有兩行和一個GridSplitter。 在第一行中,我有一個StackPanel,其中包含DataPager和DataGrid。 在第二行中,我將膨脹機控制垂直向下對齊,並向上展開方向。 DataGrid將佔據兩行的所有空間(垂直延伸),但當Expander頭部被點擊時,它將向上擴展並且DataGrid會自動縮小。SL4 datagrid與datapager和gridsplitter

但是這沒有發生。當我點擊擴展器時,它確實展開,但頁面大小增加而不是DataGrid(第0行)向上收縮。 任何人都知道我該如何實現這一目標? 我的代碼如下。我曾試圖將ScrollViewers放在DataGrid級別,StackPanel級別和Grid級別,但沒有成功。

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

回答

0

一般來說,如果你想要一個行(說底行)萎縮另一個(說頂行),那麼下面一行是自動調整大小和頂部是明星級的。

問題是自動大小的行將適合他們的內容,星型大小將只抓取剩餘部分,但如果沒有限制整體大小自動大小的行將會增長,星形大小的行將會盡一切可能獲得適合他們的內容。

如果您需要提到的摺疊/增長行爲,您需要設置控件的整體大小,使用位置。

請注意我無法弄清楚爲什麼你在這個例子中有一個Gridsplitter,所以我可能會錯過一些細節。