Prism v4、MEF、WPF - 使用正确的 Uri 进行模块图形

发布于 2024-10-17 02:55:29 字数 1070 浏览 6 评论 0原文

我的解决方案的结构是:

在此处输入图像描述

CI.Frontier.Classic 包含一个 MEF 模块。我的应用程序使用 RibbonWindow 控件,模块定义应创建哪些菜单项。我可以从 CI.Frontier.Classic 模块成功地将按钮添加到功能区控件,但是,我无法找出 ClassicFrontierToopTip.png 的正确 Uri

以下是 FrontierClassic.cs 中创建选项卡、按钮并尝试设置功能区 ToolTipImage

public void CreateMenuItems()
{
    TabData tabData = new TabData("Legacy");

    GroupData groupData = new GroupData("Internal");
    tabData.GroupDataCollection.Add(groupData);

    ButtonData classicFrontierBtn = new ButtonData()
    {
        Label = "Classic Frontier",
        ToolTipTitle = "Classic Frontier",
        ToolTipDescription = "Open Classic Frontier",
        ToolTipImage = new Uri("./Graphics/ClassicFrontierToolTip.png", UriKind.Relative)
    };
    classicFrontierBtn.Command.RegisterCommand(new DelegateCommand(LoadFrontierView));


    groupData.ControlDataCollection.Add(classicFrontierBtn);

    _ribbonService.AddTab(tabData);
}

此 Uri 不起作用,因为工具提示不显示。我可以使用 UriKind.Relative 还是应该使用某种“pack uri”?

My solution's structure is:

enter image description here

CI.Frontier.Classic contains a MEF module. My application uses the RibbonWindow control, and the modules define what menu items should be created. I can successfully add a button to the ribbon control from the CI.Frontier.Classic module, however, I cannot figure out the proper Uri to ClassicFrontierToopTip.png

Heres the code in FrontierClassic.cs that creates the tab, button and attempting to set the ribbon ToolTipImage

public void CreateMenuItems()
{
    TabData tabData = new TabData("Legacy");

    GroupData groupData = new GroupData("Internal");
    tabData.GroupDataCollection.Add(groupData);

    ButtonData classicFrontierBtn = new ButtonData()
    {
        Label = "Classic Frontier",
        ToolTipTitle = "Classic Frontier",
        ToolTipDescription = "Open Classic Frontier",
        ToolTipImage = new Uri("./Graphics/ClassicFrontierToolTip.png", UriKind.Relative)
    };
    classicFrontierBtn.Command.RegisterCommand(new DelegateCommand(LoadFrontierView));


    groupData.ControlDataCollection.Add(classicFrontierBtn);

    _ribbonService.AddTab(tabData);
}

This Uri doesn't work as the tooltip does not display. Can I use the UriKind.Relative or should I be using some sort of "pack uri"?

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

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

发布评论

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

评论(2

娇俏 2024-10-24 02:55:29

可靠的方法是利用包语法...

new Uri("pack://application:,,,/CI.Frontier.Classic;component/Graphics/ClassicFrontierToolTip.png", UriKind.Absolute);

The robust approach would be to leverage the pack syntax...

new Uri("pack://application:,,,/CI.Frontier.Classic;component/Graphics/ClassicFrontierToolTip.png", UriKind.Absolute);
念﹏祤嫣 2024-10-24 02:55:29

包含 Prism 模块的图标解决了这个问题...

ToolTipImage = new Uri("/" + GetType().Assembly.ToString().Split(',')[0] + ";component/Graphics/ClassicFrontierToolTip.png", UriKind.Relative)

不确定如果这是最好的解决方案。

Include an icon for a Prism module solved it...

ToolTipImage = new Uri("/" + GetType().Assembly.ToString().Split(',')[0] + ";component/Graphics/ClassicFrontierToolTip.png", UriKind.Relative)

Not sure if this is the best solution though.

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