I found a useful solution to a problem with a path element today. I was trying to dynamically create the path on the fly. I had a lot of rendering issues. So instead I decided to just an XAMLReader to read in some constant text (see below) – worked like a treat! I could have built the path data using line geometry but as the data is static this was a far quicker and easier to implement.
Here is a code snippet..
1: //A bit of hardcoded xaml for producing the tick
2: var examplePath = new StringBuilder("<Path xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Data=\"");
3: examplePath.Append(@"M171,328 C181.07301,342.25397 191,349.12955 191,368 C197.95908,356.40152 197.97304,342.03284 200,328");
4: examplePath.AppendFormat("\" x:name=\"etick\" Stroke=\"Black\" Fill=\"White\" Stretch=\"Fill\"></Path>");
5:
6: var etick = XamlReader.Load(examplePath.ToString()) as Path;
7: if (etick != null)
8: {
9: etick.Height = 41;
10: etick.Width = 30;
11: etick.StrokeThickness = 4;
12: evtick.Margin = new Thickness(0,0,10,6);
13: etick.VerticalAlignment = VerticalAlignment.Bottom;
14: etick.HorizontalAlignment = HorizontalAlignment.Right;
15:
16: containerGrid.Children.Add(etick);
17: }
Produces xaml like this dynamically:-
1: <Path x:Name="etick" Fill="White" Stroke="Black" Data="M171,328 C181.07301,342.25397 191,349.12955 191,368 C197.95908,356.40152 197.97304,342.03284 200,328"
2: Height="41" Width="30" StrokeThickness="4" Margin="0,0,10,6" VerticalAlignment="Bottom"
3: HorizontalAlignment="Right"/>