我有一个非常简单的应用程序资源,指定为
<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中的元素填充listview作为
<ListBox x:Name="lbColor"
IsSynchronizedWithCurrentItem="True"
Width="248" Height="56"
ItemsSource="{Binding Source={StaticResource MoreColors}, XPath=color/@name}">
</ListBox>
但是在运行时,应用程序根本不会填充Listview。我无法相信我没有能够得到像这样简单的工作......
答案 0 :(得分: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命名空间限定,这会误导查询。“
答案 1 :(得分:0)
请检查以下更改是否对您有用:
为数据提供程序添加了一个空名称空间到colors节点:
<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}" />
希望这有帮助,尊重