Simple read and display of hardcoded XAML

Tags: XAML, Silverlight

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"/>
Add a Comment