0

ツリービューにアイコンを追加しようとしていますが、表示されません。HierarchicalDataTemplate は Windows リソースにあり、treeview はグリッドにあります。

私が犯している間違いは何ですか?

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>
4

1 に答える 1

1

その XAML を使用すると、Visual Studio のエラー リストに次のような警告が表示されますか?:

リソース「ExpandingImageStyle」を解決できませんでした。

これは、HierarchicalDataTemplateが見つからないことを示していますResourceStyleそれを の一番上に移動するWindow.Resourcesと、最初の問題は消えるはずです。Styleただし、これを行うと、が 2 つを見つけることができないという警告が表示されますBitmapImage Resources。したがって、これら2つResourcesを の一番上に移動することをお勧めします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>

それでも問題が解決しない場合は、Error ListまたはOutput WindowVisual Studio で表示される可能性のあるエラーまたは警告を調べて、お知らせください。

于 2013-11-12T13:57:15.940 に答える