2011-06-15 99 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