假设我有一个应用程序,其中有用户和任务,每个用户都分配了不同的任务。我有一个列出用户的主窗口,当您单击某个用户时,会打开一个管理任务窗口,显示分配给该用户的任务,在该管理任务窗口上,您可以删除、更新和分配任务给该用户。如果我想向用户添加一个新任务,单击按钮就会打开AddTaskToUserWindow。我的问题是,处理打开这个AddTaskToUserWindow的逻辑在一个名为TaskLogic的类中,我不知道如何引用当前打开的子窗口,这样我就可以将AddTaskToUserWindow的Owner属性设置为子窗口。
我试过这个:
AddTaskToUserWindow window = new AddTaskToUserWindow();
window.Owner = Application.Current.Windows.OfType<ManageTasksWindow>().First();
window.WindowStartupLocation = WindowStartupLocation.CenterOwner;
但我想要一个解决方案,其中每个AddTaskToUserWindow的Owner属性都可以设置为相应的SubWindow。
您可以向主窗口的ViewModel添加一个属性(比如SelectedWindow或ActiveWindow(,并在选择用户时设置其值。然后,通过监听主窗口的NotifyPropertyChanged,您的TaskLogic可以在ActiveWindow自动更改时找到它。