2012-11-19 43 views
6

Tôi đang sử dụng DataGrid trong biểu mẫu để hiển thị danh sách (userID, tên, số dư, v.v.). Có một vấn đề rất lạ với nó, ở đầu một số hàng (một trong hai mươi hàng) có một khoảng trắng nhỏ khiến hàng đó bị lệch hướng. Không gian màu trắng giống như một hình chữ nhật nhỏ được đặt ngay trước ô đầu tiên của hàng. Tôi đã xem lại phong cách của mình và mọi thứ nhưng không thể hiểu tại sao điều này lại xảy ra. Điều này xảy ra chỉ khi tôi lập trình cuộn DataGrid của mình, sau khi cuộn xong, các khoảng trắng sẽ xuất hiện.Vấn đề liên kết ngang hàng dữ liệu WPF

Điều gì khiến mọi thứ trở nên tồi tệ hơn là không gian màu trắng có thể thay đổi kích thước! và khi tôi thay đổi kích thước bằng chuột, nó sẽ kéo lưới lên. Tôi thực sự không muốn gửi một thứ như thế này.

Tôi không có nhiều kinh nghiệm trong WPF, tôi thực sự sẽ đánh giá cao nếu ai đó có thể cho tôi một số ý tưởng về nơi để tìm. Cảm ơn.


Edit: Đây là ảnh chụp màn hình:

enter image description here

+1

Bạn có thể đăng ảnh chụp màn hình và một số mã không? Một công cụ như WPF Snoop có thể giúp bạn tìm ra những gì đang xảy ra. –

+0

Công cụ tuyệt vời! Bây giờ tôi đang sử dụng nó để tìm ra loại đối tượng này là gì! – DeveloperInToronto

Trả lời

7

Vấn đề này là do tiêu đề hàng được "hiển thị" cho một số hàng ngẫu nhiên.

Tôi không biết tại sao điều đó xảy ra, nhưng may mắn là việc sửa chữa rất đơn giản.

Nếu bạn đặt RowHeaderWidth="0" trên DataGrid, hành vi phải như mong đợi.

Vì một số lý do, tiêu đề hàng vẫn đang xuất hiện mặc dù HeadersVisibility được đặt thành Cột.

+0

Cảm ơn rất nhiều Peter! Bạn đã cứu tôi! Tôi nghĩ rằng tôi đã làm điều gì đó sai và tôi đã dành hai ngày qua để đi qua từng dòng xaml và mã C# mà tôi có. Nhưng tôi không thể tìm thấy bất cứ điều gì! Một lỗi kỳ lạ! – DeveloperInToronto

+1

Trong trường hợp của tôi, hành vi này là do xác thực IDataErrorInfo tăng nhẹ chiều rộng RowHeader mặc định để cho phép dấu chấm than màu đỏ (và chỉ trên các hàng có lỗi). Nếu tôi đặt 'RowHeaderWidth =" 11 "', nó vẫn không đổi và vấn đề biến mất. – Heliac

0

Tôi đã có kinh nghiệm cùng một vấn đề trên nhiều dự án, cho đến nay như tôi có thể nói, nó chỉ là một lỗi ole đồng bằng. Đó là lame. Công việc duy nhất xung quanh tôi đã tìm thấy là lame. Giống như siêu, siêu què. Tôi ước gì tôi có cái gì đó tốt hơn, nhưng tôi thì không. Dù sao, tôi thấy rằng khi tôi thay đổi kích thước lưới, những đồ tạo tác cuộn kỳ lạ sẽ biến mất, vì vậy tôi đã viết một số mã để kích hoạt động cơ cập nhật bố cục.

Timer _timer; 

void MainWindow_Loaded(object sender, RoutedEventArgs e) 
{ 
    _timer = new Timer(1000); 
    _timer.Elapsed += _timer_Elapsed; 
    _timer.Start(); 
} 

void _timer_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    //why the hell are we doing this? 
    //well, the stupid error adorners on the grid like to be mis-aligned 
    //forcing a layout to happen makes them not look off. lame, I know. 
    Dispatcher.Invoke(new Action(() => 
    { 
     MainDataGrid.Margin = new Thickness(MainDataGrid.Margin.Left, MainDataGrid.Margin.Top, MainDataGrid.Margin.Right, MainDataGrid.Margin.Bottom + 1); 
     MainDataGrid.UpdateLayout(); 

     MainDataGrid.Margin = new Thickness(MainDataGrid.Margin.Left, MainDataGrid.Margin.Top, MainDataGrid.Margin.Right, MainDataGrid.Margin.Bottom - 1); 
     MainDataGrid.UpdateLayout(); 
    })); 


} 
Các vấn đề liên quan