2009-10-01 95 views

回答

5

您可以使用启用了Textwrapping的Textblock替换单元格。 即

<dg:DataGridTemplateColumn Header="Description" Width="*"> 
    <dg:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Description}" TextWrapping="WrapWithOverflow"/>          
     </DataTemplate> 
    </dg:DataGridTemplateColumn.CellTemplate> 
</dg:DataGridTemplateColumn> 
+1

我该如何编辑单元格文本? – Marcel 2010-01-19 13:49:03

+0

文本块是只读的。你应该使用TextBox。 – Slampen 2010-05-31 12:50:37

8

如果您使用的是DataGridTextColumn,你需要定义样式的DataGridTextColumn.ElementStyle

<dg:DataGridTextColumn Header="SomeLongText" Binding="{Binding MyText}"> 
    <dg:DataGridTextColumn.ElementStyle> 
    <Style TargetType="TextBlock"> 
     <Setter Property="TextWrapping" Value="Wrap"/> 
    </Style> 
    </dg:DataGridTextColumn.ElementStyle> 
</dg:DataGridTextColumn> 

全部explination可以在以下http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridtextcolumn(v=vs.95).aspx

1

发现如果你的DataGridTextColumn正在创建的代码背后,你可以这样设置样式和设置器:

 _dataGridTextColumn.MaxWidth = 550; 
     _dataGridTextColumn.ElementStyle = new System.Windows.Style(typeof(TextBlock)); 
     _dataGridTextColumn.ElementStyle.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap)); 

这将导致_dataGridTextColumn中的文本会像在TextBlock中一样包装。