有没有办法在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。
我是不是丢了什么东西?

最佳答案

好啊!我想我找到了答案。
wpf中的xpath最初会在内部返回一个xmlnode,这可以通过向binding语句添加另一个属性path来拦截。
例如,

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

注意binding语句中设置为innerXML的path属性!另外添加一个转换器到这个和做任何你想要的!
在这里找到这个信息,http://msdn.microsoft.com/en-us/library/system.windows.data.binding.xpath.aspx

关于c# - XPath绑定(bind)以读取WPF中的InnerXml,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19110904/

10-10 23:32