8

2列のテキスト行データと、境界線とテキストブロックだけのrowdetailsテンプレートを介して表示しているより大きなフリーテキストの詳細を含むアイテムを表示するデータグリッドがあります。

私が抱えている問題は、テキストの詳細がグリッドに許可されている領域よりも大きいことが多いことです。データグリッドのデフォルトのスクロール動作は、スクロールが次のアイテムにジャンプするときに、ユーザーが詳細全体を表示できないことを意味します。を使用してこれを解決した場合

ScrollViewer.CanContentScroll="False"

次に、仮想化がオフになっているため、データグリッドが非常に遅くなり、かなりの数の行が表示されます。

rowdetailをscrollviewerでラップすることでこれを回避できると思いましたが、詳細領域がレンダリング領域に制限されていないため、これは機能しません。

それで、誰かがいくつかの使用可能なオプションを提供できますか?私のWPFの知識はごくわずかなので、これを解決するための明白な方法がある場合はお詫びします。

編集:RowDetailsTemplate

<DataGrid.RowDetailsTemplate>
    <DataTemplate >
        <Border Background="Gray"
                Padding="5,5,5,5" CornerRadius="5">
            <TextBlock Background="Transparent" 
                       Foreground="White" 
                       TextWrapping="Wrap"
                       Text="{Binding Text}"/>
        </Border>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>
4

1 に答える 1

10

RowDetailsにScrollViewerを追加する1つの方法は、次のようにRowDetailsにMaxHeightを指定することです。

<DataGrid ...>
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <Grid MaxHeight="75">
                <ScrollViewer>
                    <Border HorizontalAlignment="Stretch" CornerRadius="5" Background="Black" Margin="5" Padding="5">
                        <TextBlock Text="{Binding RowDetails}" Foreground="#509CD5" FontSize="20" Width="300" TextWrapping="Wrap"/>
                    </Border>
                </ScrollViewer>
            </Grid>                    
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
    <DataGrid.Columns>
    <!-- ... -->
</DataGrid>
于 2010-11-15T10:19:21.430 に答える