3

wpfでXPathバインディングを使用してInnerXml(またはOuterXml)全体を読み取る方法はありますか?

サンプル データ プロバイダー

<XmlDataProvider x:Key="SampleDataProvider" IsInitialLoadEnabled="True" IsAsynchronous="False" XPath="SampleDataProvider">
    <x:XData>
        <SampleData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">
            <Property ID="BlinkData">
                <Blink>
                    <Property ID="Name">Blink1</Property>
                    <Property ID="Speed">400</Property>
                    <Property ID="Value1">0</Property>
                    <Property ID="Value2">100</Property>
                </Blink>
            </Property>
        </SampleData>
    </x:XData>
</XmlDataProvider>

サンプルウィンドウ

<TextBox>
    <TextBox.Text>
        <Binding Source="{StaticResource ResourceKey=SampleDataProvider}" XPath="/SampleData/Property[@ID='BlinkData']" />
    </TextBox.Text>
</TextBox>

テキストボックスに InnerXml 全体が表示されることを期待しています。残念ながら、Blink14000100 のようなノード値しか表示されません。

ここで何か不足していますか?

4

1 に答える 1

3

わかった!私は答えを見つけたと思います。 wpf の XPath は最初に XmlNode を内部的に返しますが、これは別の属性を Binding ステートメントに追加することで傍受できます

例えば、

<TextBox Width="100" Height="100">
    <TextBox.Text>
        <Binding Source="{StaticResource ResourceKey=SampleDataProvider}" XPath="/SampleData/Property[@ID='BlinkData']" Path="InnerXml" />
    </TextBox.Text>
</TextBox >

Binding ステートメントでPath属性がInnerXmlに設定されていることに注意してください。さらに、これにコンバーターを追加して、好きなことをしてください!

ここでこの情報を見つけましたhttp://msdn.microsoft.com/en-us/library/system.windows.data.binding.xpath.aspx

于 2013-10-01T09:48:24.763 に答える