0

背景:

我有一个带有多个 TextColumns 的 DataGrid。一列是只读的,并且绑定到 DataGrid 之外的 TextBox 的文本。此 TextBox 是一个多行文本框,这意味着 AcceptsReturn = true 且 TextWrapping = Wrap。

问题:

当用户在多行 TextBox 中输入多行时,绑定的 DataGridCell(及其行)会垂直增长,以便显示所有文本。

问题:

  1. 当应该出现多行时,有没有办法让垂直滚动条出现在单元格内?
  2. 通常,由于多行内容,还有哪些其他技术可以规避 DataGridCell 及其行的增长?

研究:

我知道我可以通过强制设置它的高度来防止 DataGridRow 的增长。但是,这不会触发滚动条。

我确认 DataGridCell 中的 TextBlock 的 WordWrap 已关闭。

谢谢

4

2 回答 2

3

你试过在里面使用 aDataGridTemplateColumn和 aScrollViewer吗?例如:

<DataGridTemplateColumn Header="MyText">
 <DataGridTemplateColumn.CellTemplate>
  <DataTemplate>
   <ScrollViewer MaxHeight="30" VerticalScrollBarVisibility="Auto">
    <TextBlock TextWrapping="Wrap" Text="{Binding YourText}" />
   </ScrollViewer>
  </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
于 2013-02-08T11:37:36.567 回答
0

我最终对我的要求有点灵活,并提出了这种风格:

<Style
    TargetType="{x:Type DataGridCellsPresenter}"
    BasedOn="{StaticResource {x:Type DataGridCellsPresenter}}"
    >
    <Setter
        Property="MaxHeight"
        Value="25"
        />
</Style>

通过在我的 DataGridCellsPresenters 上设置 MaxHeight,我可以触发垂直滚动条,而不会直接干扰行高。而且我可以在我的应用程序中一致地应用它,而不是每列。

于 2013-02-08T17:59:32.323 回答