Search code examples
wpfxamldata-bindingpathgeometry

WPF - Path Geometry...Is there a way to bind the Data Property?


I have a ControlTemplate that serves as a "Bubble" popup on the AdornerLayer of a given control.

It works fine but I need to be able to calculate where it should display (middle/ bottom).

Instead of:

<Path Stroke="Black" Fill="Black" Data="M 15 20 L 15 0 33 20" Margin="0 1 0 0"/>

I am looking for (obviously this won't work but it illustrates what I'm trying to accomplish:

<Path Stroke="Black" Fill="Black" Data="M {TemplateBinding Left} 20 L 15 0 33 20"/>

Can this be done with a ValueConverter? I just can't visualize a solution for some reason. I'm also open to alternatives.

Thanks for reading and if I can provide more info please just ask.


Solution

  • If you want a value converter that you can use to convert a string into the path data, you might like to try the universal value converter I wrote a while back.

    Alternatively, to bind to a single property, you will have to expand your geometry by adding the various geometry objects into your XAML, rather than using the string shorthand. For example ...

    <Path Stroke="Black" StrokeThickness="1">
      <Path.Data>
        <PathGeometry>
          <PathGeometry.Figures>
            <PathFigureCollection>
              <PathFigure IsClosed="True" StartPoint="10,100">
                <PathFigure.Segments>
                  <PathSegmentCollection>
                    <LineSegment Point="{Binding MyPropertyPath}" />
                    <LineSegment Point="100,50" />
                  </PathSegmentCollection>
                </PathFigure.Segments>
              </PathFigure>
            </PathFigureCollection>
          </PathGeometry.Figures>
        </PathGeometry>
      </Path.Data>
    </Path>