|
<UserControl x:Class="DemoApp.XmlViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:xmlstack="clr-namespace:System.Xml;assembly=System.Xml" mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<SolidColorBrush Color="Blue" x:Key="xmlValueBrush"/>
<SolidColorBrush Color="Red" x:Key="xmAttributeBrush"/>
<SolidColorBrush Color="DarkMagenta" x:Key="xmlTagBrush"/>
<SolidColorBrush Color="Blue" x:Key="xmlMarkBrush"/>
<DataTemplate x:Key="attributeTemplate">
<StackPanel Orientation="Horizontal"
Margin="3,0,0,0" HorizontalAlignment="Center">
<TextBlock Text="{Binding Path=Name}"
Foreground="{StaticResource xmAttributeBrush}"/>
<TextBlock Text="=""
Foreground="{StaticResource xmlMarkBrush}"/>
<TextBlock Text="{Binding Path=Value}"
Foreground="{StaticResource xmlValueBrush}"/>
<TextBlock Text="""
Foreground="{StaticResource xmlMarkBrush}"/>
</StackPanel>
</DataTemplate>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="True"/>
</Style>
<HierarchicalDataTemplate x:Key="treeViewTemplate"
ItemsSource="{Binding XPath=child::node()}">
<StackPanel Orientation="Horizontal" Margin="3,0,0,0"
HorizontalAlignment="Center">
<TextBlock Text="<" HorizontalAlignment="Center"
Foreground="{StaticResource xmlMarkBrush}"
x:Name="startTag"/>
<TextBlock Text="{Binding Path=Name}"
Margin="0"
HorizontalAlignment="Center"
x:Name="xmlTag"
Foreground="{StaticResource xmlTagBrush}"/>
<ItemsControl
ItemTemplate="{StaticResource attributeTemplate}"
ItemsSource="{Binding Path=Attributes}"
HorizontalAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<TextBlock Text=">" HorizontalAlignment="Center"
Foreground="{StaticResource xmlMarkBrush}"
x:Name="endTag"/>
</StackPanel>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding NodeType}">
<DataTrigger.Value>
<xmlstack:XmlNodeType>Text</xmlstack:XmlNodeType>
</DataTrigger.Value>
<Setter Property="Text" Value="{Binding InnerText}"
TargetName="xmlTag"/>
<Setter Property="Foreground" Value="Blue"
TargetName="xmlTag"/>
<Setter Property="Visibility" Value="Collapsed"
TargetName="startTag"/>
<Setter Property="Visibility" Value="Collapsed"
TargetName="endTag"/>
</DataTrigger>
<DataTrigger Binding="{Binding HasChildNodes}" Value="False">
<Setter Property="Text" Value="/>" TargetName="endTag"/>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</UserControl.Resources>
<Grid>
<TreeView Grid.Row="2" Grid.ColumnSpan="2" Name="xmlTree"
ItemTemplate="{StaticResource treeViewTemplate}"/>
</Grid>
</UserControl>
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.