The code included in this project starts with creating a button and setting a few properties.
It then uses XamlWriter.Save to convert the control into the XAML that represents the control and any properties that were set on it.
I show two examples of XamlReader.Parse to convert the XAML into a real control, firstly using an "in-code" string declaration, then using the string variable generated from the XamlWriter.Save, before.
I then add these controls to the Visual Tree by adding them to the StackPanel's Children property.
Finally, a MessageBox showing the resulting xaml of the StackPanel and it's Children, is exactly as you passed in and would expect.
public
partial
class
MainWindow : Window
{
public
MainWindow()
{
InitializeComponent();
Button originalButton =
new
Button();
originalButton.Height = 50;
originalButton.Width = 100;
originalButton.Background = Brushes.AliceBlue;
originalButton.Content =
"Click Me"
;
// Save the Button to a string.
string
savedButton = XamlWriter.Save(originalButton);
FrameworkElement ele = (FrameworkElement)XamlReader.Parse(
"<Button Background=\"#FFF0F8FF\" Width=\"100\" Height=\"50\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">Click Me</Button>"
);
FrameworkElement ele2 = (FrameworkElement)XamlReader.Parse(savedButton);
LayoutRoot.Children.Add(ele);
LayoutRoot.Children.Add(ele2);
MessageBox.Show(XamlWriter.Save(LayoutRoot));
}
}
This available in a demo project here.
This small article is part of a series of WPF "How To" articles, in response to real user questions on the MSDN WPF Forum.