Tôi phải tích hợp giao diện người dùng WPF vào ứng dụng .NET 2.0.Khả năng tương tác giữa System.Windows.Forms.Application và System.Windows.Application
ObservableCollection cần phải được sửa đổi trong thread GUI Dispatcher, vì vậy tôi đã đưa ra một giải pháp liên quan đến InvokeLater()
ObservableCollection<Item> items;
public delegate void AddItemDelegate(Item i);
public void AddItem(Item item)
{
System.Windows.Application.Current.Dispatcher.BeginInvoke(
new AddItemsDelegate(i => items.Add(i), item);
}
Tuy nhiên, kể từ khi dự án được ban đầu được viết với .NET 2.0, các chủ đề chính sử dụng một System.Windows.Forms.Application
, vì vậy System.Windows.Application.Current
là không.
Tôi không thể thay thế System.Windows.Forms.Application
hiện tại bằng System.Windows.Application
vì ứng dụng của tôi phụ thuộc rất nhiều vào API này và hai lớp không tương thích rộng rãi.
Có cách nào để lấy số System.Windows.Application
hiện tại không? Hoặc một cách để gọi BeginInvoke()
trên số System.Windows.Forms.Application
của tôi? Hay tôi được coi là viết hệ thống DIY của riêng tôi để ủy quyền ấn bản bộ sưu tập từ chủ đề chính xác?