2015-04-17 89 views
0

我需要申请XPath BindingItemsSourceHierarchicalDataTemplate。使用属性属性语法应用XPath绑定时工作正确,但在一种情况下,我有很长的XPath表达式来使用,所以我想使用属性元素语法来应用它。如何使用属性元素语法指定绑定XPath?

这就是使用属性属性语法工作:

<HierarchicalDataTemplate 
      x:Key="rootTemplate" 
      ItemsSource="{Binding XPath=./*}"> 
      <StackPanel 
       Orientation="Horizontal" 
       VerticalAlignment="Center"> 
       <TextBlock 
        Margin="5,0,0,0" 
        Text="{Binding Name}" /> 
       <Image 
        Source="repeat.ico" 
        Margin="5 0 0 0" 
        Width="20" 
        Height="20" 
        Visibility="{Binding Converter={StaticResource RepeatToVisiblityConverter}}"></Image> 
      </StackPanel> 
     </HierarchicalDataTemplate> 

而这正是我想达到相同的模板上面,使用长的XPath时,使用属性元素语法:虽然我在这里使用了相同的XPath中的问题,但在实际它是长]

<HierarchicalDataTemplate 
      x:Key="rootTemplate"> 
      <HierarchicalDataTemplate.ItemsSource> 
       <Binding> 
        <Binding.XPath> 
         <![CDATA[./*]]> 
        </Binding.XPath> 
       </Binding> 
      </HierarchicalDataTemplate.ItemsSource> 
      <HierarchicalDataTemplate.ItemTemplate> 
       <DataTemplate> 
        <StackPanel 
         Orientation="Horizontal" 
         VerticalAlignment="Center"> 
         <CheckBox 
          Margin="5,0,0,0" /> 
         <TextBlock 
          Margin="5,0,0,0" 
          Text="{Binding Name}" /> 
        </StackPanel> 
       </DataTemplate> 
      </HierarchicalDataTemplate.ItemTemplate> 
     </HierarchicalDataTemplate> 

的的ItemsSource变空,并使用此语法用于指定绑定时上什么都没有。

有谁知道,如何解决这个问题?

+0

' ./*'? – Clemens

+0

或''? – Clemens

+0

这也是行不通的。即使这样做,我也有一个非常大的XPath表达式,如果用双引号引起来,将需要许多转义序列。 – teenup

回答

0

下面的代码工作:

它只是从上面删除这两条线:

<HierarchicalDataTemplate.ItemTemplate> 
       <DataTemplate> 

稍后我会找出来,为什么删除该作品。

<HierarchicalDataTemplate 
      x:Key="rootTemplate"> 
      <HierarchicalDataTemplate.ItemsSource> 
       <Binding> 
        <Binding.XPath> 
         ./*[@Repeat="true" or .//*[@Repeat="true"]] 
        </Binding.XPath> 
       </Binding> 
      </HierarchicalDataTemplate.ItemsSource> 
      <StackPanel 
       Orientation="Horizontal" 
       VerticalAlignment="Center"> 
       <CheckBox 
        Margin="5,0,0,0" /> 
       <TextBlock 
        Margin="5,0,0,0" 
        Text="{Binding Name}" /> 
      </StackPanel> 
     </HierarchicalDataTemplate> 
相关问题