2013-10-01 18 views
3

是否有方法使用wpf中的XPath綁定讀取整個InnerXml(或OuterXml)?XPath綁定在wpf中讀取InnerXml

樣本數據提供商

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

我在這裏錯過了什麼嗎?

回答

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 > 

通知的路徑屬性的綁定聲明中設置InnerXml!另外添加一個轉換器,並做任何你想要的!

在這裏找到了這個信息,http://msdn.microsoft.com/en-us/library/system.windows.data.binding.xpath.aspx