Prism v4,MEF,WPF - 使用适当的Uri模块图形

时间:2011-02-10 15:18:19

标签: wpf prism uri mef pack-uri

我的解决方案的结构是:

enter image description here

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

继承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还是应该使用某种“打包uri”?

2 个答案:

答案 0 :(得分:3)

强有力的方法是利用pack syntax ......

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

答案 1 :(得分:0)

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

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

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