当itemssource非常大时,datagrid表现异常

时间:2010-11-01 13:36:37

标签: c# wpf xaml

当项目源是非常大的列表(> 4000)时,我看到数据网格中的异常行为,就像列在滚动水平滚动条时消失,甚至额外列(我的意思是重复列)出现而不是指定。

这是我的xaml代码。

                

    <TK:DataGridTextColumn Header=" Date" Binding="{Binding Date}" MinWidth="70"/>
    <TK:DataGridTextColumn Header=" Time" Binding="{Binding Time}"  MinWidth="70"/>
    <TK:DataGridTextColumn Header=" Severity"  Binding="{Binding Severity}" MinWidth="70" />
    <TK:DataGridTextColumn Header=" Message"  Binding="{Binding Message}" MinWidth="70" Width ="1*"/>
</TK:DataGrid.Columns>
</TK:DataGrid>

这是我背后的代码

enter code here

public Window1()

{
  pLogList = new List<LogList>();
  InitializeComponent();
  try
  {
    pLogList = new List<LogList>();
    pLogList.Add(new LogList(DateTime.Now, "Hello World", "Success", "GUI")); //LogList is a class and i hav written each properties to bind to datagrid
  datagridtest.ItemsSource = pLogList;
  }
  catch (Exception pEx)
  {
    // MessageBox.Show(pEx.Message);
  }
}

这是我的LogList类

enter code here
public class LogList
  {
    public LogList(DateTime date,string mess,string sev,string time)
    {
      m_Date = date;
      m_Time = time;
      m_Severity = sev;
      m_Message = mess;
    }
    string m_Time;
    string m_Message;
    string m_Severity;
    DateTime m_Date;
    public DateTime Date
    {
      get
      {
        return m_Date;
      }
      set
      {
        m_Date = value;
      }
    }
    public String Message
    {
      get
      {
        return m_Message;
      }
      set
      {
        m_Message = value;
      }
    }
    public String Severity
    {
      get
      {
        return m_Severity;
      }
      set
      {
        m_Severity = value;
      }
    }
    public String Time
    {
      get
      {
        return m_Time;
      }
      set
      {
        m_Time = value;
      }
    }
  }

我希望我能清楚地解决我的问题并期待解决方案

谢谢大家

1 个答案:

答案 0 :(得分:0)

尝试使用DataGrid的Column-和RowVirtualization属性。

这些属性主要是此类问题的罪魁祸首。