0

私はWPFに比較的慣れていないと言って、これを前置きします。

したがって、基本的に次の XML を取得しています。ツリー要素とその下のすべてを TreeView にバインドする必要があります。特定の XML 要素を TreeView にバインドする簡単な方法はありますか?

<Diff>
    <Packages
        left="c:\foo\foo"
        right="c:\bar\bar" />
    <Section name="Filesystem" state="different">
        <Tree>
            <Node name="VFS" state="different">
                <Node name="Windows" state="different">
                    <Node name="System32" state="different">
                        <Leaf name="notepad.exe" state="left-only" file="VFS\Windows\System32\notepad.exe" />
                        <Leaf name="cmd.exe" state="same" />
                    </Node>
                    <Node name="WinSxS" state="same">
                        <Leaf name="foo" state="same" />
                    </Node>
                </Node>
                <Node name="ProgramFilesX86" state="different">
                    <Leaf name="foo.exe" state="different" />
                    <Node name="Bar" state="right-only" >
                        <Leaf name="bar.exe" state="right-only" file="VFS\ProgramFilesX86\Bar\bar.exe" />
                    </Node>
                </Node>
            </Node>
        </Tree>
    </Section>
    <Section>
        <!--Another tree-->
    </Section>
</Diff>

また、これが問題になるかどうかはわかりませんが、複数の section 要素が存在する可能性があり、それぞれの下にツリーがあることに注意してください。

4

1 に答える 1

0

を使用しXmlDataProviderてコントロールを XML にバインドしていると仮定するとXPathプロパティを設定して結果をフィルター処理できるはずです。

<XmlDataProvider 
   x:Key="FilesystemXmlData"
   Source="source.xml"
   XPath="Section[@name='Filesystem']/Tree" 
/>

その後、 aHierarchicalDataTemplateを使用してデータをツリーにバインドできます。

この CodeProject の記事に簡単な例があります。

于 2013-06-27T18:26:49.657 に答える