Как работать с SVG в WPF?

Во ViewModel получаю svg в виде строки. Как его забиндить во View в виде иконки? Необходим конвертер или можно как то обойтись без него?
  • Вопрос задан
  • 3472 просмотра
Решения вопроса 1
@f_kirill Автор вопроса
Воспользовался SharpVectors .
Во ViewModel сохраняю в файл svg.
В xaml разметке использую компонент SvgViewbox.
Чтобы забиндить путь в Source добавил AttachedProperty
public class SvgViewboxAttachedProperties : DependencyObject
    {
        public static string GetSource(DependencyObject obj)
        {
            return (string)obj.GetValue(SourceProperty);
        }

        public static void SetSource(DependencyObject obj, string value)
        {
            obj.SetValue(SourceProperty, value);
        }

        private static void OnSourceChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            var svgControl = obj as SvgViewbox;
            if (svgControl != null)
            {
                svgControl.Source = new System.Uri((string) e.NewValue);
            }
        }

        public static readonly DependencyProperty SourceProperty =
            DependencyProperty.RegisterAttached("Source",
                typeof(string), typeof(SvgViewboxAttachedProperties),
                new PropertyMetadata(null, OnSourceChanged));
    }


В итоге в разметке выглядит так

<svgc:SvgViewbox  common:SvgViewboxAttachedProperties.Source="{Binding IconPath}" />
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы