正在做打印的一个功能,但是有一列内容特别长,用普通的列展示的话特别难看而且不会自动换行,没办法就用模版列放了一个textblock 并设置了TextWrapping='Wrap'  但是这个datagrid需要在后台自动生成,最后经过实验终于弄好了,分享出来大家一起讨论;

 

 internal static DataGridTemplateColumn GetGridViewColumn(string header, string element)
        {
            DataGridTemplateColumn tempCol = new DataGridTemplateColumn();
            tempCol.Header = header;
            
            StringBuilder cellTemp = new StringBuilder();
            cellTemp.Append("<DataTemplate ");
            cellTemp.Append(" xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'");
            cellTemp.Append(" xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'");
            cellTemp.Append(" xmlns:grid='clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView'>");
            cellTemp.Append(element);
            cellTemp.Append("</DataTemplate>");

            tempCol.CellTemplate = (DataTemplate)XamlReader.Load(cellTemp.ToString());

            return tempCol;
        }

调运:

if (dg.Columns[i].Header.ToString() == "故障处理经过")
{
         datagrid.Columns.Add(GetGridViewColumn("故障处理经过", "<TextBlock Text='{Binding 故障处理经过}' TextWrapping='Wrap'  HorizontalAlignment='Stretch' width='180'  />"));
}
else if (dg.Columns[i].Header.ToString() == "原因分析")
{
       datagrid.Columns.Add(GetGridViewColumn("原因分析", "<TextBlock Text='{Binding 原因分析}' TextWrapping='Wrap'  HorizontalAlignment='Stretch' width='180'  />"));
                                
}

 

 

posted on 2012-09-25 14:48    阅读(2158)  评论(0编辑  收藏  举报