2011-06-15 54 views
9

我在.NET 4中使用了具有DataGridTextColumn的WPF DataGrid控件。WPF DataGridTextColumn多行输入

我希望能够输入多行文字。 将数据绑定到列时,换行符格式正确,但在编辑文本时我找不到创建换行符的方法。

<DataGrid ItemsSource="{Binding MyMessages}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Message" Binding="{Binding Path=Message}" Width="Auto"/> 
    <DataGrid.Columns> 
</DataGrid> 

有什么建议吗?

回答

24

尝试:

<DataGridTextColumn Header="Message" Binding="{Binding Path=Message}" Width="Auto"> 
     <DataGridTextColumn.ElementStyle> 
      <Style TargetType="TextBlock"> 
       <Setter Property="TextWrapping" Value="Wrap" /> 
      </Style> 
     </DataGridTextColumn.ElementStyle> 
     <DataGridTextColumn.EditingElementStyle> 
      <Style TargetType="TextBox"> 
       <Setter Property="TextWrapping" Value="Wrap" /> 
       <Setter Property="AcceptsReturn" Value="true" /> 
      </Style> 
     </DataGridTextColumn.EditingElementStyle> 
    </DataGridTextColumn> 
+0

就像一个魅力:-) – Freddy

+0

注:在我的情况下,这个工作,但只有当我设置DataGrid.Horizo​​ntalScollBarVisibility =每http://social.msdn.microsoft.com/Forums/en-“已禁用”美国/ wpf /线程/ e1b33317-e9ef-4b03-b173-c00aa22fb78d /一旦我做到了,我的行开始调整美观。 –

+0

有没有人解决了在单独样式资源中这样做的语法?我现在有这个问题,不能为我的生活找到一个工作风格的资源来完成这项工作! –

0

xmlns:wtk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit" 
 

 
<DataTemplate x:Key="dataGridMultiLineTextBoxTemplateColumn" DataType="your data type"> 
 
     <wtk:MultiLineTextEditor 
 
      x:Name="MultiLineTextBox" 
 
      Width="300" 
 
      Margin="2" 
 
      Padding="5,0,0,0" 
 
      FontSize="12" 
 
      FontWeight="Normal" 
 
      Foreground="Black" 
 
      IsSpellCheckEnabled="True" 
 
      Text="{Binding your binding property, Mode=TwoWay, NotifyOnTargetUpdated=True, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" 
 
      TextWrapping="Wrap" /> 
 
    </DataTemplate>

扩展WPF工具包MultiLineTextEditor将提供你所需要的。 Extended WPF Toolkit MultiLineTextEditor

+0

你可以扩展吗? – wogsland

+1

答复已更新。 – Yaz