wpf xmlns=""作用——https://learn.microsoft.com/zh-cn/previous-versions/dotnet/netframework-4.0/ms752299(v=vs.100)微软官网示例bug异常

            <XmlDataProvider x:Key="ExpenseDataSource" XPath="Expenses">
                <x:XData>
                    <Expenses  xmlns="">
                        <Person Name="Mike" Department="Legal">
                            <Expense ExpenseType="Lunch" ExpenseAmount="50" />
                            <Expense ExpenseType="Transportation" ExpenseAmount="50" />
                        </Person>
                        <Person Name="Lisa" Department="Marketing">
                            <Expense ExpenseType="Document printing" ExpenseAmount="50"/>
                            <Expense ExpenseType="Gift" ExpenseAmount="125" />
                        </Person>
                        <Person Name="John" Department="Engineering">
                            <Expense ExpenseType="Magazine subscription" ExpenseAmount="50"/>
                            <Expense ExpenseType="New machine" ExpenseAmount="600" />
                            <Expense ExpenseType="Software" ExpenseAmount="500" />
                        </Person>
                        <Person Name="Mary" Department="Finance">
                            <Expense ExpenseType="Dinner" ExpenseAmount="100" />
                        </Person>
                    </Expenses>
                </x:XData>
            </XmlDataProvider>

若去掉xmlns="",ListBox显示异常:

        <ListBox Name="peopleListBox" Grid.Column="1" Grid.Row="2" 
            ItemsSource="{Binding Source={StaticResource ExpenseDataSource}, XPath=Person}"
            ItemTemplate="{StaticResource nameItemTemplate}">
        </ListBox>

 

 

<Expenses xmlns="">

这行代码的意思是:“在这个标签及其内部,清除所有继承的默认命名空间”。
这样一来,<Expenses> 和 <Person> 就变成了标准的、无命名空间的纯 XML 数据。此时,XPath=Person 就能完美匹配到数据节点,数据也就成功显示出来了。

 

posted @ 2026-03-30 16:52  echo-efun  阅读(2)  评论(0)    收藏  举报