gpt4 book ai didi

wpf - 如何使用 MEF 和 MVVM 将 PRISM 模块添加到工具栏

转载 作者:行者123 更新时间:2023-12-03 10:18:16 26 4
gpt4 key购买 nike

我正在使用带有 MEF 的 PRISM 4.0 作为我的容器。我在 Shell 中定义了 2 个区域,ToolBar 和 MainRegion。工具栏区域使用自定义 RegionBehaviour - AutoPopulateExportedViewsBehaviour 自动填充我的 ToolBarModule。我的 MainRegion 可以包含 1 个或多个 View 模块,这些模块将通过第三方停靠布局管理器停靠。

我无法创建工具栏按钮来表示我的应用程序中的可用 View 。我的想法是使用 ToolBarService 或 Event 模式,以便每个 View 模块可以以分离的方式向 ToolBar 注册自己。

但是,在我调用 RegionManager.RegisterViewWithRegion 之前,我的 View Module 构造函数似乎没有被调用...

如何控制我的模块的初始化,以便它们可以注册到工具栏。因此允许他们添加一个按钮,但实际上并不显示 View 本身。仅当单击刚刚注册的 View 的按钮时,才会显示 View 。

谢谢

最佳答案

How can I control the initialisation of my modules so they can register with the ToolBar but not be shown initally?



我不确定你的意思。

我了解您希望模块在加载时注册它自己的导航部分。我有类似的场景,顶部有菜单栏,下面有按钮栏。每个模块在加载时 - 使用初始化代码插入它自己的按钮/菜单:
public void Initialize()
{
this.RegionManager.RegisterViewWithRegion(RegionNames.Menu, typeof(NavigationView));
this.RegionManager.RegisterViewWithRegion(RegionNames.Toolbar, typeof(ToolbarNavigationView));
}

这些区域具有实际的按钮/项目,按下时会调用其他内容。例如,这里是 NavigationViewModel
namespace IDATT.Module.SystemManager.ViewModels
{
using System;
using System.ComponentModel.Composition;

using Microsoft.Practices.Prism.Regions;

[Export]
public class NavigationViewModel
{
[Import]
public ISecurityService SecurityService { get; set; }

[Import]
public IRegionManager RegionManager { get; set; }

public void Mail()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MailView).Name, UriKind.Relative));
}

public void MaintainUser()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MaintainUserView).Name, UriKind.Relative));
}

public void MaintainGroup()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MaintainGroupView).Name, UriKind.Relative));
}

public void MaintainMailTemplate()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MaintainMailTemplateView).Name, UriKind.Relative));
}

public void SetUpOptions()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(SetUpSystemManagerOptionsView).Name, UriKind.Relative));
}

public void Logout()
{
this.SecurityService.Logout();
}
}
}

关于wpf - 如何使用 MEF 和 MVVM 将 PRISM 模块添加到工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com