【问题标题】:Prism Unity background view棱镜 Unity 背景视图
【发布时间】:2015-07-14 14:09:38
【问题描述】:

我正在尝试使用统一棱镜和 WPF。到目前为止,我所做的是一个在目录中查找模块并按需加载它的应用程序。一切都很好。我可以使用 requestnavigate 在我的模块之间导航。

但我遇到了一个问题,我找不到任何好的文档。 我有一些模块需要继续执行(在后台运行)。例如,我有一个 VOIP 模块和媒体播放器模块,当我导航到另一个模块时,它们需要继续执行。是否可以使用 requestnavigate 并可能线程化以前的视图/视图模型,直到它成为当前视图?

【问题讨论】:

    标签: c# wpf multithreading unity-container prism


    【解决方案1】:

    我们可以在单独的线程中运行它

     // Subscribe to Composite Presentation Events
        var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
        var navigationCompletedEvent = eventAggregator.GetEvent<NavigationCompletedEvent>();
        navigationCompletedEvent.Subscribe(OnNavigationCompleted, ThreadOption.UIThread);
    

    事件可以在单独的线程中订阅

    subscriptionToken = AddedEvent.Subscribe(AddedEventHandler, 
                                   ThreadOption.UIThread, false, erFilter);
    

    View-Switching-Applications-with-Prism

    PRISM App

    Prism-WPF-standalone-and-interaction-modules

    【讨论】:

    • 我没有得到答案:S。 eventAggregator 使我能够从另一个模块调用函数。所以基本上你在解释什么。是在从另一个视图执行导航时订阅事件。但我想线程化当前未用于活动视图的 viewModel。我有很多困难。在这种情况下了解 Uithread 的目标。我还尝试了解 Dispatcher 在 WPF 应用程序中的作用,他可能使我能够在不同的线程中运行 Viewmodel。
    猜你喜欢
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多