Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何使用属性元素语法指定绑定XPath?_Wpf - Fatal编程技术网

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

Wpf 如何使用属性元素语法指定绑定XPath?,wpf,Wpf,我需要为HierarchycalDataTemplate的ItemsSource应用XPath绑定。当使用属性属性语法应用XPath绑定时,它工作正常,但是在一个例子中,我有很长的XPath表达式要使用,所以我想使用属性元素语法应用它 这就是使用属性语法的作用: <HierarchicalDataTemplate x:Key="rootTemplate" ItemsSource="{Binding XPath=./*}">

我需要为
HierarchycalDataTemplate
ItemsSource
应用
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时使用Property元素语法试图为上面的同一模板实现的目标:[虽然我在这里使用了相同的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将变为空,并且不显示任何内容


有人知道如何修复此问题吗?

以下代码有效:

它只是从上面删除了这两行:

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

./*[@Repeat=“true”或./*[@Repeat=“true”]]

或者
怎么样?这也不起作用。即使这样,我有一个非常大的XPath表达式,如果用双引号写的话,它需要很多转义序列。