2

WPFツールキットのWPFDataGridに奇妙な問題があります。行数が増えるとスクロールバーが正しく表示され、スクロールバーの上矢印または下矢印を押すとスクロールが機能します。

データグリッドのスクロールバーをドラッグしようとすると、問題が発生します。私のページの周りにはスクロールビューアがあります。グリッド上のスクロールバーをクリックしてドラッグすると、代わりにページスクローラーがスクロールします。スクロールバーがページに表示されない場合でも、グリッドはスクロールしません。これに対する回避策はありますか?

この問題について助けていただければ幸いです。

たとえば、この場合、ページが280未満の場合、ドラッグでスクロールします。ただし、ドラッグスクロールはグリッドでは機能しません。

<ScrollViewer ScrollViewer.IsDeferredScrollingEnabled="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
                    <DockPanel>
                        <dg:DataGrid HorizontalScrollBarVisibility="Auto" SelectionMode="Single" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeColumns="False" CanUserSortColumns="False" AutoGenerateColumns="False" RowHeaderWidth="17" ItemsSource="{Binding Path=OrderSearchVm}" IsReadOnly="True" MaxHeight="280" DockPanel.Dock="Top">
                            <dg:DataGrid.Columns>                                   
                                <dg:DataGridTextColumn Width="75" Header="Date" Binding="{Binding Path=OrderDate}" >
                                    <dg:DataGridTextColumn.ElementStyle>
                                        <Style TargetType="{x:Type TextBlock}">
                                            <Setter Property="TextWrapping" Value="Wrap" />
                                        </Style>
                                    </dg:DataGridTextColumn.ElementStyle>
                                </dg:DataGridTextColumn>
                                <dg:DataGridTextColumn Header="Type" Binding="{Binding Path=OrderType}" Width="45"/>
                                <dg:DataGridTextColumn Header="Shipping Name" Binding="{Binding Path=ShipToName}" Width="115">
                                    <dg:DataGridTextColumn.ElementStyle>
                                        <Style TargetType="{x:Type TextBlock}">
                                            <Setter Property="TextWrapping" Value="Wrap" />
                                        </Style>
                                    </dg:DataGridTextColumn.ElementStyle>
                                </dg:DataGridTextColumn>
                                <dg:DataGridTextColumn Header="Shipping Address " Binding="{Binding Path=ShipToAddress}" Width="160">
                                    <dg:DataGridTextColumn.ElementStyle>
                                        <Style TargetType="{x:Type TextBlock}">
                                            <Setter Property="TextWrapping" Value="Wrap" />
                                        </Style>
                                    </dg:DataGridTextColumn.ElementStyle>
                                </dg:DataGridTextColumn>                                   
                                <dg:DataGridTextColumn Header="E-Mail" Binding="{Binding Path=Email}" Width="140">
                                    <dg:DataGridTextColumn.ElementStyle>
                                        <Style TargetType="{x:Type TextBlock}">
                                            <Setter Property="TextWrapping" Value="Wrap" />
                                        </Style>
                                    </dg:DataGridTextColumn.ElementStyle>
                                </dg:DataGridTextColumn>
                            </dg:DataGrid.Columns>
                        </dg:DataGrid>
                    </DockPanel>
    </ScrollViewer>
4

2 に答える 2

2

愚かな間違い、ScrollViewer.IsDeferredScrollingEnabled="True"が私の問題の原因でした

于 2010-04-08T12:38:50.237 に答える
1

データグリッドに次の2つのプロパティを実装します。

  • ScrollViewer.IsDeferredScrollingEnabled="True"
  • ScrollMode="Deferred"

データグリッドを適切にスクロールできるようになります

于 2010-07-13T08:47:58.733 に答える