WPF DataGrid子级垂直滚动

时间:2018-07-08 21:03:53

标签: c# wpf datagrid scrollviewer vertical-scrolling

大家好!

我正在进行的项目的第一步已经完成。但是,现在,我在XAML结构中遇到了一个新问题。

我正在尝试弄清楚如何最好地呈现我的数据。目前,我认为使用DataGrid是合适的,因为绑定功能强大,并且DataGrid根据我的对象列表适当地填充了项目。但是,似乎垂直滚动条只出现在整个行中,而不出现在“数据列”中的行上-我的第二个数据列可以有一个长文本块!

我对WPF的世界还很新鲜,因此,我感谢您的投入!这是下面的我的XAML窗口代码:

<Window x:Class="_puffDisplay.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_puffDisplay"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <ScrollViewer VerticalScrollBarVisibility="Auto">
        <DataGrid Name ="puffCoreView" HorizontalAlignment="Left" Height="400" Margin="10,10,0,0" VerticalAlignment="Top" Width="774" ItemsSource="{Binding}" 
                  IsReadOnly="True"
                  AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header= "Puff #" Width="350" Binding="{Binding PuffNumber}"/>
                <DataGridTextColumn Header="Puff Data" Width="350" Binding="{Binding Data}" ScrollViewer.VerticalScrollBarVisibility="Visible">

                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        </ScrollViewer>

我需要了解如何允许用户垂直滚动每行第二列以及整个行。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用带有ScrollViewer和TextBlock的DataGridTemplateColumn代替DataGridTextColumn。这是一种可能性...

            <DataGridTemplateColumn Header="Puff Data" Width="350">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ScrollViewer MaxHeight="100">
                            <TextBlock Text="{Binding Data}" TextWrapping="Wrap"/>
                        </ScrollViewer>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>