【问题标题】:WPF setting the owner of a window to its parent window MVVMWPF将窗口的所有者设置为其父窗口MVVM
【发布时间】:2021-01-02 11:44:24
【问题描述】:

假设我有一个应用程序,其中有用户和任务,每个用户都有不同的任务分配给他们。我有一个列出用户的 MainWindow,当您单击用户时,会打开一个 ManageTasksWindow,显示分配给该用户的任务,在此 ManageTasksWindow 上,您可以删除、更新和分配任务给该用户。如果我想向用户添加新任务,则单击按钮将打开 AddTaskToUserWindow。我的问题是处理这个 AddTaskToUserWindow 打开的逻辑在一个名为 TaskLogic 的类中,我不知道如何引用当前打开的 SubWindow,以便我可以将 AddTaskToUserWindow 的 Owner 属性设置为 SubWindow。

我试过这个:

AddTaskToUserWindow window = new AddTaskToUserWindow();
window.Owner = Application.Current.Windows.OfType<ManageTasksWindow>().First();
window.WindowStartupLocation = WindowStartupLocation.CenterOwner;

但我想要一个解决方案,每个 AddTaskToUserWindow 的 Owner 属性都可以设置为对应的 SubWindow。

【问题讨论】:

  • 如果您使用的是 mvvm。你会有类似 userviewmodel 的东西,它有一个可观察的 taskviewmodel 集合。将这些任务视图模型之一添加到用户的任务中,它会被数据模板转换为 ui。无需查找窗口,您可以操作数据并从该数据生成 ui。 mvvm 成为商业团队事实上的标准的众多原因之一。

标签: c# wpf window parent


【解决方案1】:

您可以向主窗口的 ViewModel(例如 SelectedWindow 或 ActiveWindow)添加一个属性,并在您选择用户时设置其值。然后,监听主窗口的 NotifyPropertyChanged,你的 TaskLogic 可以在 ActiveWindow 自动变化时找到它。

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 2021-08-25
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2014-10-12
    • 2010-10-05
    • 2010-11-06
    相关资源
    最近更新 更多