WPF Save Canvas to XAML and Load from XAML
2010-12-06
1: Save Canvas to XAML:
The canvas can include child controls:
FileStream fs = File.Open("xamlFileName.xaml", FileMode.Create);
XamlWriter.Save(contentCanvas, fs);
fs.Close();
2: Load from XAML:
FileStream fs = File.Open(openFileDialog1.FileName, FileMode.Open, FileAccess.Read)
Canvas savedCanvas = XamlReader.Load(fs) as Canvas;
fs.Close();
this.LayoutRoot.Children.Add(savedCanvas);
3: How to save canvas to a "completed" xmal file:
Above 1 only save Canvas information to XMAL file without a "completed" XML file format. So choose the following code example:
Page page = new Page();
StackPanel panel = new StackPanel();
page.Content = panel;
Button button = new Button();
button.Content = new Binding("Name");
panel.Children.Add(button);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create("test.xaml", settings);
XamlDesignerSerializationManager manager = new XamlDesignerSerializationManager(writer);
XamlWriter.Save(page, manager);
The following is the result:
<?xml version="1.0" encoding="utf-8"?>
<Page xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<Button Content="{Binding Path=Name}" />
</StackPanel>
</Page>