2011-06-15 18 views
9

Utilizzo il controllo WPF DataGrid in .NET 4 con DataGridTextColumn.WPF DataGridTextInput multiriga colonna

Desidero poter inserire il testo su più righe. Le interruzioni di riga sono formattate correttamente quando collego i dati alla colonna, ma non ho trovato modo di creare interruzioni di riga durante la modifica del testo.

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

Qualche suggerimento?

risposta

24

Prova:

<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

funziona come un fascino :-) – Freddy

+0

Nota: Nel mio caso questo ha funzionato, ma solo se ho impostato DataGrid.HorizontalScollBarVisibility = "Disabilitato" per http://social.msdn.microsoft.com/Forums/en- US/wpf/thread/e1b33317-e9ef-4b03-b173-c00aa22fb78d/Una volta che l'ho fatto, le mie righe iniziarono a ridimensionarsi magnificamente. –

+0

C'è qualcuno che ha risolto la sintassi di fare ciò in una risorsa di stile separata? Sto avendo questo problema in questo momento e non posso per la vita di me trovare una risorsa di stile di lavoro per fare questo lavoro! –

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>

esteso WPF Toolkit MultiLineTextEditor fornirà quello che vi serve. Extended WPF Toolkit MultiLineTextEditor

+0

Puoi approfondire? – wogsland

+1

Risposta aggiornata. – Yaz

Problemi correlati