Prism v4, MEF, WPF - Использование правильного Uri для графического модуля - PullRequest
1 голос
/ 10 февраля 2011

Структура моего решения:

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 или я должен использовать какой-то "pack uri"?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2011

Надежный подход заключается в использовании синтаксиса pack ...

new Uri("pack://application:,,,/CI.Frontier.Classic;component/Graphics/ClassicFrontierToolTip.png", UriKind.Absolute);
0 голосов
/ 10 февраля 2011

Включите значок для модуля Prism решил это ...

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

Не уверен, что это лучшее решение.

...