<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();
}
}
}