1

我有一个非常简单的应用程序资源指定为

 <Application.Resources>
        <XmlDataProvider x:Key="MoreColors" XPath="/colors">
            <x:XData>
                <colors>
                    <color name="pink"/>
                    <color name="white"/>
                    <color name="black"/>
                    <color name="cyan"/>
                    <color name="gray"/>
                    <color name="magenta"/>
                </colors>
            </x:XData>
        </XmlDataProvider>
    </Application.Resources>

然后一个窗口试图用来自 xml 的元素填充一个列表视图

<ListBox x:Name="lbColor" 
                 IsSynchronizedWithCurrentItem="True"
                 Width="248" Height="56"
                 ItemsSource="{Binding Source={StaticResource MoreColors}, XPath=color/@name}">

        </ListBox> 

但是在运行时,应用程序根本不会填充 Listview。我不敢相信我还没有能够得到像这样简单的东西来工作....

4

2 回答 2

2

尝试在应用程序资源中使用<colors xmlns="">而不是<colors>

http://msdn.microsoft.com/en-us/library/system.windows.data.xmldataprovider.aspx说“XML 数据的根节点有一个 xmlns 属性,它将 XML 命名空间设置为空字符串。这是将 XPath 查询应用于 XAML 页面内联的数据岛的要求。在这种内联情况下,XAML 以及数据岛继承 System.Windows 命名空间。因此,您需要将命名空间设置为空白防止 XPath 查询被 System.Windows 命名空间限定,这会误导查询。”

于 2011-03-18T19:52:12.023 回答
0

请检查以下更改是否适合您:

为数据提供者添加了一个空命名空间到颜色节点:

<XmlDataProvider x:Key="MoreColors" XPath="/colors">
    <x:XData>
        <colors xmlns="">
            <color name="pink"/>
            <color name="white"/>
            <color name="black"/>
            <color name="cyan"/>
            <color name="gray"/>
            <color name="magenta"/>
        </colors>
    </x:XData>
</XmlDataProvider>

列表框的 xpath 查询略有更改:

<ListBox ItemsSource="{Binding Source={StaticResource MoreColors}, XPath=//color/@name}" />

希望这会有所帮助,问候

于 2011-03-18T19:48:51.820 回答