我有一个DataGridTextColumn ElementStyle,如下所示:
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Style.Setters>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="2" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="White" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style.Setters>
</Style>
</DataGridTextColumn.ElementStyle>
我需要此列中的单元格以多行显示文本,但行数不应超过3. TextBlock
没有MaxLines
属性,因此我无法直接指定它。更重要的是TextBlock
没有Template属性,因此我不能使用少边框,只读TextBox
。我能在这做什么?
答案 0 :(得分:4)
我认为实现这一目标的最简单方法是使用TemplateColumn。这是一个快速示例:第二列是一个TextColumn,你不能做太多,第一列是一个带有TextBox的TemplateColumn,它将是无边框和只读的,MaxLines设置为3:
<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Template Column" Width="30" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="True" BorderThickness="0" Text="{Binding Mode=OneWay}" MaxLines="3" TextWrapping="Wrap" Foreground="White">
<TextBox.Background>
<LinearGradientBrush>
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="2" />
</LinearGradientBrush>
</TextBox.Background>
</TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Text Column" Binding="{Binding}" Width="30" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Style.Setters>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="2" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="White" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style.Setters>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
<sys:String>coucouuuuuuuuuuuuu</sys:String>
</DataGrid>