WPF DataGrid Children Вертикальная прокрутка

Привет снова всем!

Первый этап моего текущего проекта завершен. Однако теперь я столкнулся с новой проблемой внутри структуры 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>

Мне нужно посмотреть, как я могу позволить пользователю вертикально прокручивать второй столбец каждой строки, а также строки в целом. Какие-либо предложения?


person Kieran Ojakangas    schedule 08.07.2018    source источник


Ответы (1)


Вместо DataGridTextColumn используйте DataGridTemplateColumn с ScrollViewer и TextBlock. Вот один из вариантов...

            <DataGridTemplateColumn Header="Puff Data" Width="350">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ScrollViewer MaxHeight="100">
                            <TextBlock Text="{Binding Data}" TextWrapping="Wrap"/>
                        </ScrollViewer>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
person AQuirky    schedule 08.07.2018
comment
Это абсолютно сделал это! Большое Вам спасибо. - person Kieran Ojakangas; 09.07.2018
comment
Дополнительный вопрос: любое предложение сделать каждый столбец DataGrid выбираемым отдельно? Я надеялся, что смогу скопировать и вставить данные из отдельной ячейки, если вы понимаете, о чем я. - person Kieran Ojakangas; 09.07.2018
comment
Используйте SelectionUnit=Cell в DataGrid - person AQuirky; 09.07.2018
comment
Спасибо чувак! Кроме того, вы видели этот пост? stackoverflow.com/ вопросов/136435/ Я попытался реализовать код, предложенный Торвином, чтобы сделать мой текст в моем текстовом блоке доступным для выбора, но пока я не вижу выделения текста. Этого следует ожидать? - person Kieran Ojakangas; 15.07.2018
comment
@KieranOjakangas нет, я не видел этот пост. Я не понимаю. Если вам нужен выбираемый текст, очевидным подходом является использование текстового поля. - person AQuirky; 15.07.2018