0

バックグラウンド:

複数の TextColumns を持つ DataGrid があります。1 つの列は読み取り専用で、DataGrid の外部にある TextBox のテキストにバインドされています。この TextBox は複数行のテキスト ボックスです。つまり、AcceptsReturn = true および TextWrapping = Wrap です。

問題:

ユーザーが複数行の TextBox に複数の行を入力すると、バインドされた DataGridCell (およびその行) が垂直方向に拡大し、すべてのテキストが表示されます。

質問:

  1. 複数の行が表示されるときに、セル内に垂直スクロールバーを表示する方法はありますか?
  2. 一般に、複数行のコンテンツによる DataGridCell とその行の成長を回避するための他の手法は何ですか?

リサーチ:

高さを強制的に設定することで、DataGridRow の成長を防ぐことができることはわかっています。ただし、それはスクロールバーをトリガーしません。

また、DataGridCell 内の TextBlock で WordWrap がオフになっていることを確認しました。

ありがとう

4

2 に答える 2

3

DataGridTemplateColumnその中で aと aを使用しようとしましScrollViewerたか?例えば:

<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 に答える