如何使用属性元素语法指定绑定XPath?

时间:2015-04-17 10:40:36

标签: wpf

我需要为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变为空,并且不显示任何内容。

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

1 个答案:

答案 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>