Question

I'm trying to add icons in my treeview but it's not showing up. The HierarchicalDataTemplate is in the windows resources and treeview is in the Grid.

Can any body tell me what is the mistake i'm making?

Here is the XML:

<Window x:Class="Treeview.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Support" Height="700" Width="1024" SizeToContent="WidthAndHeight" 
        mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        d:DesignHeight="229" Icon="/Test;component/Images/Treeview.jpg">

    <Window.Resources>

        <XmlDataProvider x:Key="questions" XPath="Questions/Question" />

        <HierarchicalDataTemplate x:Key="rootTemplate">

            <HierarchicalDataTemplate.ItemsSource>
                <Binding XPath="child::*" />
            </HierarchicalDataTemplate.ItemsSource>
            <StackPanel Orientation="Horizontal">

                <CheckBox Name="checkBoxTree"  Checked="TreeView_Checked" Unchecked="checkBoxTree_Unchecked" />
                <Image Style="{StaticResource ExpandingImageStyle}">
                    <Image.Resources>
                        <BitmapImage x:Key="Icon_Closed" UriSource="Images/Plus.ico"/>
                        <BitmapImage x:Key="Icon_Open" UriSource="Images/Minus.ico"/>
                    </Image.Resources>
                </Image>
                <TextBlock Text="{Binding XPath=@Name, Mode=TwoWay}" />

                <TextBlock>
                            <Hyperlink NavigateUri="{Binding XPath=@WebSite}" RequestNavigate="Hyperlink_RequestNavigate">
                                <TextBlock Text="{Binding XPath=@WebSite}" /> 
                            </Hyperlink>    
                        </TextBlock>
            </StackPanel>

        </HierarchicalDataTemplate>

    </Window.Resources>
    <Grid>

            <TreeView Name="TreeViewer" HorizontalAlignment="Left" Height="220" Margin="10,116,0,0" Grid.Row="1" 
                      VerticalAlignment="Top" Width="700" Visibility="Collapsed"  FontSize="15" 
   ItemsSource="{Binding Source={StaticResource questions}}" ItemTemplate="{StaticResource rootTemplate}"  >

                <TreeView.Resources>


                    <Style x:Key="ExpandingImageStyle" TargetType="{x:Type Image}">
                        <Setter Property="Source" Value="{DynamicResource Icon_Closed}"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TreeViewItem}, Path=IsExpanded}" Value="True">
                                <Setter Property="Source" Value="{DynamicResource Icon_Open}"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TreeView.Resources> 
            </TreeView>

    </Grid>

</Window>
Was it helpful?

Solution

Surely with that XAML you have a Warning shown in the Visual Studio Error List like the following?:

The resource "ExpandingImageStyle" could not be resolved.

This is telling you that your HierarchicalDataTemplate can't find the Resource. If you move that Style to the top of your Window.Resources, the first problem should disappear. However, when you do that, you'll then get a warning that the Style can't find the two BitmapImage Resources. So you'd better move those two Resources to the top of your Window.Resources:

<BitmapImage x:Key="Icon_Closed" UriSource="Images/Plus.ico"/>
<BitmapImage x:Key="Icon_Open" UriSource="Images/minus.ico"/>
<Style x:Key="ExpandingImageStyle" TargetType="{x:Type Image}">
    ...
</Style>
<XmlDataProvider x:Key="questions" XPath="Questions/Question" />

<HierarchicalDataTemplate x:Key="rootTemplate">
    ...
        <Image Style="{StaticResource ExpandingImageStyle}" />
    ...
</HierarchicalDataTemplate>

If you find that that still doesn't work, please take a look at any errors or warnings that you may get in either the Error List or Output Window in Visual Studio and let us know.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top