Воспользовался
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}" />