【问题标题】:WPF toolkit datagrid cell text wrappingWPF 工具包数据网格单元格文本换行
【发布时间】:2010-12-02 23:04:04
【问题描述】:

我的 WPF 数据网格的列是固定宽度的,这意味着行中的长文本被截断。如何让文本换行?

【问题讨论】:

    标签: wpf datagrid cell word-wrap


    【解决方案1】:

    如果您使用的是 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>
    

    完整的解释可以在以下http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridtextcolumn(v=vs.95).aspx找到

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        如果您的 DataGridTextColumn 是在后面的代码中创建的,您可以这样设置样式和设置器:

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

        这将导致 _dataGridTextColumn 内的文本像在 TextBlock 内一样换行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-26
          • 2010-12-19
          • 2010-12-13
          • 1970-01-01
          • 2011-02-16
          • 2010-11-16
          • 2018-04-29
          相关资源
          最近更新 更多