Используя SVG в качестве ленты SmallImageSource, с SharpVectors? - PullRequest
0 голосов
/ 22 апреля 2019

Я успешно смог использовать статический файл .svg в качестве изображения в WPF, следуя указаниям в другом вопросе .

Основной подход заключается в использовании Библиотека SharpVectors и do:

<svgc:SvgViewbox Source="path/to/file.svg"/>

Вместо тега <Image .../>.

Однако я изо всех сил пытаюсь найти аналогичный метод для использования SVG вSystem.Windows.Controls.Ribbon - где я хотел бы использовать его как SmallImageSource из RibbonMenuButton.

Я пробовал следующее:

<RibbonMenuButton Label="Test">
    <RibbonMenuButton.SmallImageSource>
        <svgc:SvgViewbox Source="path/to/file.svg"/>
    </RibbonMenuButton.SmallImageSource>
</RibbonMenuButton>

При котором выдается сообщение об ошибке компилятора:

Указанное значение не может быть присвоено.Ожидается следующий тип: "ImageSource".

Я думаю, что ключевая проблема заключается в том, что svgc:SvgViewBox не является "источником изображения", но я не знаю, как правильно конвертироватьили иначе обойти это.


Я открыт для альтернативных подходов, которые не используют SharpVectors, но чрезвычайно удобно иметь исходные файлы изображений в формате SVG и не нужно вручную конвертировать в любой другой формат.

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Пожалуйста, попробуйте использовать недавно добавленную собственность;AppName, который используется, чтобы попытаться разрешить URI файла ресурсов во время разработки.См. Примеры для SvgImage и недавно добавленного SvgImageConverter, особенно демонстрацию панели инструментов с использованием значков SVG.

https://github.com/ElinamLLC/SharpVectors/tree/master/TutorialSamples/ControlSamplesWpf

SvgImageConverter обеспечивает поддержку связывания, если вам это нужно в отличие от SvgImage.

0 голосов
/ 23 апреля 2019

SharpVectors включает расширение конвертера, которое можно использовать для «вывода» ImageSource.

Это описано в разделе «1.2 Расширения WPF и преобразователи типов» их руководств по использованию .

Пример:

<RibbonMenuButton Label="Test" LargeImageSource="{svgc:SvgImage path/to/file.svg}"/>

(где svgc - это определенное имя пространства имен SharpVectors в вашем XAML.)

Расширение связывания svgc:SvgImage создаетDrawingImage, который является типом ImageSource.Это прекрасно работает во время выполнения с изображением SVG, отображаемым в кнопку.

К сожалению, во время разработки изображение кнопки пустое.

...