【问题标题】:Prism v4, MEF, WPF - Using proper Uri for module graphicPrism v4、MEF、WPF - 为模块图形使用正确的 Uri
【发布时间】:2011-02-10 23:40:38
【问题描述】:

我的解决方案的结构是:

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”?

【问题讨论】:

    标签: wpf prism uri mef pack-uri


    【解决方案1】:

    稳健的方法是利用pack syntax...

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

    【讨论】:

      【解决方案2】:

      Include an icon for a Prism module 解决了...

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 2011-05-09
        相关资源
        最近更新 更多