Có một số cách tiếp cận Window
s trong WPF. Nếu bạn có nhiều mở, sau đó bạn có thể lặp qua chúng như thế này:
foreach (Window window in Application.Current.Windows) window.Close();
Nếu bạn đã có một loại đặc biệt của tùy chỉnh Window
, bạn có thể sử dụng này:
foreach (Window window in Application.Current.Windows.OfType<YourCustomWindow>())
((YourCustomWindow)window).DoSomething();
Nếu bạn chỉ sau một tham chiếu đến MainWindow
, sau đó bạn chỉ có thể sử dụng này:
Window mainWindow = Application.Current.MainWindow;
Tuy nhiên, sử dụng phương pháp này, có một cơ hội mà nó sẽ trở lại null
. Trong trường hợp này, hãy chắc chắn rằng bạn thiết lập MainWindow
về tài sản trong đó của constructor này:
// From inside MainWindow.xaml.cs
Application.Current.MainWindow = this;
Cần lưu ý tuy nhiên, @woutervs là đúng ... bạn nên không thể truy cập vào giao diện điều khiển từ Window
trong các lớp thư viện. Bạn thực sự nên dữ liệu liên kết các bộ sưu tập với ListBox.ItemsSource
và sau đó thao tác thu thập dữ liệu để thay thế.
CẬP NHẬT >>
Tôi không biết tại sao đối tượng Application.Current
của bạn là null
... nó có thể là do bạn đã nạp thư viện lớp của bạn thành một khác nhau AppDomain
. Dù bằng cách nào, tôi nghĩ rằng bạn đang thiếu hình ảnh lớn. Có thực sự là không có lý do tại sao một lớp thư viện lớp cần một tham chiếu đến chính Window
.
Nếu bạn cần phải thực hiện một số công việc về thu thập dữ liệu, sau đó chỉ cần vượt qua thu thập dữ liệu từ mã phía sau, hoặc mô hình nhìn của bạn. Khi công việc hoàn tất, sau đó chỉ cần chuyển nó trở lại giao diện người dùng nơi bạn có quyền truy cập vào ListBox
và/hoặc bộ sưu tập là dữ liệu được liên kết với thuộc tính ItemsSource
.
Hộp danh sách WPF có thể ràng buộc, thay vì có thuộc tính vào hộp danh sách của bạn, bạn nên có thuộc tính cho nguồn chứa các mục của bạn và liên kết chúng với hộp danh sách (LoggerList.ItemSource = myList; . lớp học để nhiều cửa sổ và do đó bạn sẽ có thể sử dụng chúng cách bạn đang xử lý nó bây giờ chỉ là không đúng cách bạn nên nhìn vào ràng buộc và cơ bản ví dụ WPF – woutervs
Hãy thử điều này:.. 'Window ParentWindow = Application.Current. . MainWindow' –
Hỷ, thử nó với Window ParentWindow = Application.Current.MainWindow Nhưng tôi không thể có được LoggerList – user2644964