Gần đây tôi đã chạy vào một vấn đề tương tự với một cửa sổ màu đen trong WPF, trong một giải pháp VB 2010/.Net 4.0, nơi mỗi cửa sổ khác làm việc tốt. Thủ phạm hóa ra là cách thức mà tôi đã bật tắt khả năng hiển thị, sử dụng 3 lệnh sau đây. Giải pháp là để loại bỏ tất cả ngoại trừ dòng đầu tiên, một với các tài liệu tham khảo hữu Tầm nhìn (loại bỏ chỉ dòng .Show sẽ gây ra nó để render một cách chính xác lần đầu tiên nhưng sau đó màu đen):
Application.MisbehavingBlackWindow.Visibility = System.Windows.Visibility.Visible
Application.MisbehavingBlackWindow.Show()
Application.MisbehavingBlackWindow.Activate()
tôi chưa bao giờ trước đây đã có một vấn đề với loạt lệnh này để hiển thị cửa sổ WPF, vì vậy tôi đoán tôi đã đi vào một rut và không bao giờ bận tâm để kiểm tra xem đó là cách tối ưu để đi về nó; ngoài thói quen, tôi chỉ dán mã khi cần thiết để triệu hồi cửa sổ. Nó vẫn hoạt động cho mọi cửa sổ khác trong mọi giải pháp khác mà tôi từng viết, nhưng nó khiến cửa sổ này trở thành màu đen. Lúc đầu nó chỉ xảy ra liên tục trong một thói quen cụ thể, sau đó trở thành vĩnh viễn không rõ lý do. Không có dòng mã nào sau đây mà tôi đã thử nghiệm với bất kỳ sự khác biệt nào:
Tước tất cả các điều khiển ra khỏi cửa sổ không có hiệu lực; nó vẫn sẽ chuyển sang màu đen nếu nó chỉ có một TextBlock duy nhất. Mặt khác, một mẫu đã xuất hiện sau khi tôi thử thực hiện nó từ các thường trình khác, đặc biệt nếu dán khối mã đầu tiên bên trong một khối gọi lên một cửa sổ khác. Nếu tôi đưa nó vào trước một khối mã như hình bên dưới, cửa sổ chuyển sang màu đen; nếu tôi đưa nó vào sau, thì không.
Application.OtherWindow.Visibility = System.Windows.Visibility.Visible
Application.OtherWindow.Show()
Application.OtherWindow.Activate()
Giải pháp hoạt động (cho đến nay) ngay cả khi cửa sổ bị ẩn bằng lệnh Window.Hide(). Tôi đã có một bao gồm trong một sự kiện Sub bên trong cửa sổ vi phạm, được kích hoạt bất cứ khi nào cửa sổ bị mất tập trung. Toggling nó trở lại bằng cách sử dụng tài sản Visibility vẫn làm các trick mà không đòi hỏi bất kỳ thay đổi cho rằng.
Tôi hy vọng điều này sẽ giúp bất kỳ ai gặp phải vấn đề khó chịu này. Cho đến nay, hầu hết các giải pháp mà tôi đã thấy rải rác trên Internet dường như dựa trên những thứ như Chủ đề Windows, card đồ họa và các biến bên ngoài khác, nhưng chúng ta có thể sửa chữa ít nhất một số trường hợp quyền này trong mã .Net của chúng tôi phía sau.
Tôi cũng gặp vấn đề tương tự, bằng cách sử dụng cùng một kỹ thuật. – VHanded
bạn đã giải quyết vấn đề này chưa? –
@Luis Filipe - Không, tôi đã không giải quyết vấn đề này, khách hàng đã gặp vấn đề này đã quyết định chuyển sang một sản phẩm khác (không đáng ngạc nhiên) và tôi không nhận được khiếu nại về vấn đề này từ bất kỳ ai khác. – Nir