Tôi đã thử sử dụng cả DataGrid tùy chỉnh cũng như dữ liệu chứng khoán trong WPF. Tôi đã thử populating chúng bằng tay cũng như thông qua bindings. Trong cả hai trường hợp, chúng đều chậm.WPF DataGrid rất chậm để hiển thị
Tôi có một scenerio nơi người dùng nhấp vào một nút và một DataGrid xuất hiện với dữ liệu thích hợp. Hiện tại tôi đang có bằng chứng về chế độ khái niệm và chỉ sử dụng dữ liệu mẫu. Tôi có một DataSet với một bảng có 10 hàng trong đó.
Nếu tôi không đính kèm bất kỳ dữ liệu nào vào DataGrid khi tôi nhấp vào nút DataGrid trống hiển thị khá nhiều ngay lập tức, người dùng không thể nhận thấy sự chậm trễ. Ngay sau khi tôi thêm 10 hàng dữ liệu, cho 6 cột, độ trễ khoảng 2 giây, rất đáng chú ý cho người dùng.
Tôi thậm chí đã thử điền bằng dữ liệu trống, chỉ để có được một lưới trống để xuất hiện và nó là bằng nhau như chậm.
for (int i = 0; i < 10; i++)
_dataGrid.Items.Add("");
tôi đặt một bộ đếm thời gian để đếm ve từ khi nút được nhấp để khi tất cả các mã được thực thi để vẽ DataGrid và nó là khoảng 20 mili giây, vì vậy các mã thực thi rất nhanh, nhưng trên màn hình là nơi tụt hậu lớn. Tôi đã thử một GridView và nó render rất nhanh trên màn hình.
Tôi đã nghe các báo cáo khác nhau về việc vẽ DataGrid chậm với các kịch bản phức tạp và sử dụng 1000 hàng, nhưng điều này đơn giản như khi có, 6 cột của 10 hàng chứa đầy dữ liệu trống.
Để hiển thị chỉ đọc là GridView, một tùy chọn khả thi ngang bằng với DataGrid?
Cập nhật
Đây là việc tạo ra các cột của tôi.
DataGridTextColumn column = new DataGridTextColumn();
column.ColumnWidthChanged += new ColumnWidthChangedEventHandler(column_ColumnWidthChanged);
column.Header = entity.GetPropertyValue("ColumnLabel");
column.Binding = new Binding(entity.GetPropertyValue("Tag"));
column.Width = new DataGridLength(entity.GetPropertyDouble("DisplaySize"));
_dataGrid.Columns.Add(column);
Đây là cách tôi liên kết Tập dữ liệu với 10 hàng trong đó.
_dataGrid.ItemsSource = ds.Tables[0].DefaultView;
_dataGrid.DataContext = ds.Tables[0];
Không chắc chắn những gì tôi có thể làm khác đi.
có thể là phần cứng của nó? –
Tôi cũng đã thử ứng dụng trên một hệ thống khác và nó cũng chạy chậm. Vấn đề là một số xem có nhiều DataGrid trên chúng, vì vậy sự chậm trễ chỉ tăng cho mỗi DataGrid bổ sung. –
tôi sử dụng tiêu chuẩn dữ liệu wpf chuẩn với cột động và nhiều hơn nữa sau đó 10000rows và không có vấn đề với điều đó. whats your itemssource? một datatable hoặc somekind của bộ sưu tập? hy vọng bạn đã không thêm các mục trong một foreach như bạn đăng bài ?? – blindmeis