1

2 つの行と GridSplitter を持つグリッドがあります。最初の行には、DataPager と DataGrid を含む StackPanel があります。2 番目の行では、エキスパンダー コントロールを垂直に下に配置し、方向を上に展開します。DataGrid が両方の行のすべてのスペースを占める (垂直方向に伸びる) という考えですが、Expander ヘッダーがクリックされると、上に拡張され、DataGrid が自動的に縮小されます。

しかし、これは起こっていません。エキスパンダーをクリックすると、展開されますが、DataGrid(Row 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>
4

1 に答える 1

0

通常、ある行 (一番下の行など) を別の行 (一番上の行など) に縮小したい場合、一番下の行は自動サイズで、一番上の行はスターサイズです。

問題は、自動サイズの行がコンテンツに適合し、スター サイズの行が残りを取得することですが、全体のサイズを制限するものがない場合、自動サイズの行は成長し、スター サイズの行は可能な限りのものになります。コンテンツに合わせてください。

言及した折りたたみ/成長動作が必要な場合は、コントロールの全体的なサイズを設定する必要があります。

そもそも、その例に Gridsplitter がある理由を理解できなかったため、詳細が欠落している可能性があることに注意してください。

于 2010-08-23T12:44:33.210 に答える