没有 RegionManager 的 PRISM 导航,只有 MEF

发布于 2024-10-15 09:08:43 字数 190 浏览 4 评论 0原文

我们计划开发一个使用 MEF 作为基础的框架,并根据需要引入 Prism 的部分。

棱镜的目标资产之一是导航。但是,这可以与 RagionManager 一起使用吗?

我们不想使用 RegionManager,因为它看起来有点矫枉过正。我们的主要是工作流类型的应用程序,不需要复杂的ui组成,这就是regionmanager的主要目的

We are planning on developing a framework using MEF as the base an pulling in bits of Prism as required.

One of the target assets from prism is the navigation. Can this, however be used with RagionManager ?

We don't want to use RegionManager as it seems like a bit of overkill. Ours is mostly a workflow type application and does not require complex ui composition, which is the primary purpose of regionmanager

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北笙凉宸 2024-10-22 09:08:44

大多数时候,导航只是菜单项,我同意,这有点矫枉过正。

我们对菜单项所做的就是向 Shell 注册菜单项,以便 Shell 可以创建菜单,包括外观和感觉。有了 MEF,这真的很简单。

从 MenuItem 实体开始。

public class MenuItem
{
     public ICommand ClickCommand { get; private set; }
     public string Path { get; private set; }
     public MenuItem(DelegateCommand command, string path) { //yada yada }
}

您可以从模块中导出这些菜单项的实例。

[Export(typeof(MenuItem))]
public MenuItem MyFirstItem = new MenuItem(
     new DelegateCommand(
         () => MessageBox.Show("woo!")), 
         "My First\Menu Item 1")
     );

在您的 shell 中,您只需导入这些并创建您尝试为菜单项呈现的任何视觉元素。当您可能希望导航元素全部看起来相同时,这还有一个额外的好处,即不依赖模块来创建正确的导航元素外观。

Most of the time, navigation is just menu items and I agree, it's a bit overkill.

What we do with menu items, is register menu items with the Shell so that the Shell can then create the menu, including the look and feel. With MEF this is really simple.

Start with a MenuItem entity.

public class MenuItem
{
     public ICommand ClickCommand { get; private set; }
     public string Path { get; private set; }
     public MenuItem(DelegateCommand command, string path) { //yada yada }
}

From your modules, you can export instances of those menu items.

[Export(typeof(MenuItem))]
public MenuItem MyFirstItem = new MenuItem(
     new DelegateCommand(
         () => MessageBox.Show("woo!")), 
         "My First\Menu Item 1")
     );

And in your shell, you'd just import these and create whatever visual element you are trying to render for menu items. This has the added benefit on not relying on modules to create the right look for navigation elements when you probably want them all to look the same.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文