代码之家  ›  专栏  ›  技术社区  ›  Andrew Keith

将xdocument绑定到wpf并仍使用xpath?

  •  2
  • Andrew Keith  · 技术社区  · 14 年前

    这是一个由两部分组成的问题。

    1)是否可以在不使用ObjectDataProvider的情况下将XDocument绑定到WPF控件?

    下面是我的代码片段,其中xmlcondocument起作用,但我不能使用xdocument

       XmlDataProvider provider = new XmlDataProvider();
        provider.XPath = "/Parent/Child";
        provider.Document = mydoc; // xmldocument works fine.
        Binding binding = new Binding();
        binding.XPath = "InnerChild/Name";
        binding.Source = provider;
        decisionCb.SetBinding(ComboBox.ItemsSourceProperty, binding);
    

    我需要保留使用xpath绑定的能力,因为我的XML文档是动态生成的。我想用xdocument和linq:(

    2)是否可以在XAML中的Xelement中使用xpath扩展函数?

    <DataTemplate DataType="{}{http://myns}Child" >
    <StackPanel Orientation="Horizontal">
    <!-- This wont work because Element cannot accept XPath -->
    <TextBlock Text="{Binding Path=Element[{http://myns}InnerChild/Name]}" /> 
    </StackPanel>
    </DataTemplate>
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   venezia    14 年前

    第一个问题的答案是“是的,你可以”。
    关于这个论点的一篇好文章是Beatrix Stollniz的一篇: link text
    关于第二个答案,我说“不,不可能”。Xlinq体系结构是利用IEnumerable(basic Linq)扩展构建的,因此xpath是不必要的,而且(比如说)还不够。
    干杯