<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication1" Title="Window1" Height="400" Width="600" Loaded="Window_Loaded" Name="window"> <Window.Resources> <XmlDataProvider x:Key="xaml" /> </Window.Resources> <StackPanel> <TreeView Name="treeView1" ItemsSource="{Binding Source={StaticResource xaml}, XPath=*}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding XPath=*}"> <TextBlock Text="{Binding Path=Name}" /> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> <TextBox Text="{Binding ElementName=treeView1, Path=SelectedItem.OuterXml, Mode=OneWay}" TextWrapping="Wrap" /> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.IO; using System.Windows.Markup; using System.Xml; namespace WpfApplication1 { public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { string xaml = XamlWriter.Save(this); XmlDocument doc = new XmlDocument(); doc.LoadXml(xaml); XmlDataProvider provider = (XmlDataProvider)FindResource("xaml"); provider.Document = doc; provider.Refresh(); } } }