1

I have a svg that I open in Inkscape and save as xaml. When I look at the xaml I see, that the xaml is missing some elements. Is there a way to save this file correct to xaml? Or is there a way in Inkscape to modify the elements in such way that the error doesn't occure?

Here is my svg:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="480" width="640" viewBox="0 0 640 480">
  <defs>
    <path id="a" fill="#ffde00" d="M-.588.81L0-1 .588.81-.952-.31H.952z"/>
  </defs>
  <path d="M0 0h640v480H0z" fill="#de2910"/>
  <use xlink:href="#a" transform="matrix(71.9991 0 0 72 119.999 120)" width="30" height="20"/>
  <use xlink:href="#a" transform="matrix(-12.33562 -20.5871 20.58684 -12.33577 240.291 47.996)" width="30" height="20"/>
  <use xlink:href="#a" transform="matrix(-3.38573 -23.75998 23.75968 -3.38578 287.95 95.796)" width="30" height="20"/>
  <use xlink:href="#a" transform="matrix(6.5991 -23.0749 23.0746 6.59919 287.959 168.012)" width="30" height="20"/>
  <use xlink:href="#a" transform="matrix(14.9991 -18.73557 18.73533 14.99929 239.933 216.054)" width="30" height="20"/>
</svg>

And here the resulting xaml:

<?xml version="1.0" encoding="UTF-8"?>
<!--This file is NOT compatible with Silverlight-->
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform">
  <Canvas Name="svg17" Width="640" Height="480">
    <Canvas.RenderTransform>
      <TranslateTransform X="0" Y="0"/>
    </Canvas.RenderTransform>
    <Canvas.Resources>
      <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="a" Fill="#FFFFDE00" x:Key="a">
        <Path.Data>
          <PathGeometry Figures="M-.588.81L0-1 .588.81-.952-.31H.952z" FillRule="NonZero"/>
        </Path.Data>
      </Path>
    </Canvas.Resources>
    <!--Unknown tag: metadata-->
    <!--Unknown tag: sodipodi:namedview-->
    <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path5" Fill="#FFDE2910">
      <Path.Data>
        <PathGeometry Figures="M0 0h640v480H0z" FillRule="NonZero"/>
      </Path.Data>
    </Path>
  </Canvas>
</Viewbox>

You can see that there are 5 xlink:href which are missing in the output.

MTR
  • 1,690
  • 3
  • 20
  • 47
  • It would be expected behavior that the xlink:href attribs don't get ported over. SVG is not XAML. – Chris W. Jun 29 '17 at 14:53
  • Don't you think, that it would be easy to use the resource "a" in the xaml file. I don't have the exact syntax at hand, but I think this should also be possible in xaml. – MTR Jun 29 '17 at 15:13
  • It is, but you have to understand that SVG is a different beast all together. You can still get events and such from a Path data element ([example](https://stackoverflow.com/questions/43350165/is-there-any-way-to-make-geometrydrawing-interactive-from-the-ui-or-how-to-loa/43355097#43355097)) – Chris W. Jun 29 '17 at 16:13

1 Answers1

1

For anybody who is interested, I found a workaround in Inkscape: Just use "Unlink Clone" on all elements an there are no more xlinks in the svg.

MTR
  • 1,690
  • 3
  • 20
  • 47