WPF C # Path: Cómo pasar de una cadena con Datos de ruta a Geometría en Código (no en XAML)

Quiero generar un objeto de ruta WPF en Código.

En XAML puedo hacer esto:

 

¿Cómo puedo hacer lo mismo en el Código?

  Path path = new Path(); Path.Data = "foo"; //This won't accept a string as path data. 

¿Hay una clase / Método disponible que convierta la cadena con PathData a PathGeometry o similar?

¿Seguramente de alguna manera el XAML se analiza y la cadena de datos se convierte?

 var path = new Path(); path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280"); 

Path.Data es de tipo Geometry. Usando Reflector JustDecompile (eff Red Gate) , miré la definición de Geometría para su TypeConverterAttribute (que el serializador xaml usa para convertir valores de tipo string a Geometry ). Esto me indicó el GeometryConverter. Comprobando la implementación, vi que usa Geometry.Parse para convertir el valor de cadena de la ruta a una instancia de Geometry.

Podría usar el mecanismo de encuadernación.

 var b = new Binding { Source = "M 100,200 C 100,25 400,350 400,175 H 280" }; BindingOperations.SetBinding(path, Path.DataProperty, b); 

Espero que te ayude.

Para hacer geometría a partir de una cadena de texto original, puede usar la clase System.Windows.Media.FormattedText con el método BuildGeometry ()

  public string Text2Path() { FormattedText formattedText = new System.Windows.Media.FormattedText("Any text you like", CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface( new FontFamily(), FontStyles.Italic, FontWeights.Bold, FontStretches.Normal), 16, Brushes.Black); Geometry geometry = formattedText.BuildGeometry(new Point(0, 0)); System.Windows.Shapes.Path path = new System.Windows.Shapes.Path(); path.Data = geometry; string geometryAsString = geometry.GetFlattenedPathGeometry().ToString().Replace(",",".").Replace(";",","); return geometryAsString; }