문제

다음과 같은 XML 아래 내가 사용하고 싶 hierarchicaldatatemplate WPF 트리.

에 따라 값 유형 내가 사용하려는 다른 이미지의 이름이 다음 그것을 얻기 위해 다음에서 이름 에서 id 태그입니다.

    <key type='Configuration'>
        <id field='name' value='Some value'/>
    </key>
    <key type='Container'>
        <id field='name' value='MyName'/>
        <key type='Container'>
            <id field='name' value='Data12345'/>
            <key type='Container'>
                <id field='name' value='Data987655'/>
                <key type='Circuit'>
                    <id field='name' value='Data63236723'/>
                </key>
            </key>
        </key>
    </key>

내가 노력의 어떤 간단한 예제는 하지만 아무도 그들을 사용하는 방법을 보여 hierarchicaldatatemplate 특성 및 또한 방법으로 텍스트를 얻을 바인딩에서 특성이 있습니다.

면 누구나 할 수 있는 방법을 보여줍 hierarchicaldatatemplate 봐야 하는 이에 대한 XML 을 사용될 트리.

도움이 되었습니까?

해결책

처음에는 제가 생각하는 당신은 수 없는 그 요구 사항을 충족으로는 XML 스키마.그러나,그것을 시도한 후에는 시험 프로젝트는 것 같다,그것은 모든 잘 작동:

enter image description here

당신이 사용할 필요 XmlDataProvider 액세스 XML file:

<XmlDataProvider Source="/WpfApplication2;component/Xml/TestXMLFile.xml" 
    XPath="root/key" />

또한 다음 단계를 수행해야 합니다 추가 root 노드를 XML 게 법적인:

<?xml version="1.0" encoding="utf-8" ?>
<root>
    <key type='Configuration'>
        <id field='name' value='Some value'/>
    </key>
    <key type='Container'>
        <id field='name' value='MyName'/>
        <key type='Container'>
            <id field='name' value='Data12345'/>
            <key type='Container'>
                <id field='name' value='Data987655'/>
                <key type='Circuit'>
                    <id field='name' value='Data63236723'/>
                </key>
            </key>
        </key>
    </key>
</root>

다음에 추가해야 합 TreeView:

<TreeView ItemsSource="{Binding}" ItemTemplate="{StaticResource ItemTemplate}" />

그리고 마지막으로,추가 HierarchicalDataTemplateResources 섹션:

<HierarchicalDataTemplate x:Key="ItemTemplate" ItemsSource="{Binding XPath=key}"  DataType="key">
    <StackPanel Orientation="Horizontal" Margin="0,2">
        <Image>
            <Image.Style>
                <Style>
                    <Setter Property="Image.Source" Value="Images/Default.png" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding XPath=@type}" Value="Container">
                            <Setter Property="Image.Source" Value="Images/Container.png" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding XPath=@type}" Value="Configuration">
                            <Setter Property="Image.Source" Value="Images/Configuration.png" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding XPath=@type}" Value="Circuit">
                            <Setter Property="Image.Source" Value="Images/Circuit.png" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>
        <TextBlock Text="{Binding XPath=id/@value}" Margin="5,0" />
    </StackPanel>
</HierarchicalDataTemplate>

나는 정말 못을 의미하지 전체 당신을 위한 것,이렇게 나를 떠나 당신은 그것을 조정할 수 있습니다.나는 당신을 믿게 될 것인 여기에서이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top