Tôi đã thử một số lượng lớn các cách để có được một tham chiếu tĩnh của cửa sổ của tôi trên chương trình của tôi. Tôi cần truy cập tất cả các thành viên của nó khi chạy từ các lớp khác nhau, vì vậy cần có một tham chiếu tĩnh.Làm thế nào để có được một tham chiếu tĩnh đến một cửa sổ WPF?
Điều tôi muốn có là một cái gì đó như Program.Window1
, trong đó Core
là tĩnh và MyWindow
là một trong các thành viên tĩnh của nó.
Trong WinForms, tôi thường khai báo biểu mẫu tĩnh của tôi trong Program.cs, nhưng điều này dường như không hoạt động với WPF và tùy chỉnh "App.xaml" ApplicationDefinition của chúng.
Tôi có thể làm như thế nào?
Lưu ý: Tôi đã thử một số cách: sử dụng lệnh gọi trực tiếp đến cửa sổ mới (ví dụ: Program.Window1 = new Window1()
) sẽ không hoạt động vì tôi nhận được một số ngoại lệ về lỗi không hợp lệ. Như tôi đã hiểu cho đến nay, chỉ có ApplicationDefinitions mới có thể khởi chạy các cửa sổ trong WPF.
Dưới đây là ngoại lệ bất cứ khi nào tôi cố gắng tạo ra một cửa sổ "bởi mã" và không phải do mặc định StartupUri XAML ApplicationDefinition của:
Các thread gọi phải STA, vì nhiều thành phần giao diện người dùng yêu cầu này.
Bạn phải đánh dấu Phương pháp chính bằng [STAThread] nếu bạn cần tạo cửa sổ trong mã. –