我需要为XPath Binding
的{{1}}申请ItemsSource
。使用属性属性语法应用时,XPath绑定工作正常,但在一种情况下,我使用了非常长的XPath表达式,因此我想使用属性元素语法来应用它。
这是使用属性属性语法的工作:
HierarchicalDataTemplate
这就是我正在尝试使用上面相同的模板,使用长XPath时使用Property Element语法:[虽然我在这里使用了相同的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>
使用此语法指定绑定时,ItemsSource变为空,并且不显示任何内容。
有谁知道,如何解决这个问题?
答案 0 :(得分: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>