项目未显示在WPF ListBox中,即使它们出现在设计模式中

时间:2012-05-22 16:52:53

标签: wpf xaml data-binding listbox xmldataprovider

我在XAML和WPF中遇到了一些数据绑定问题。具体来说,我正在尝试将数据从XmlDataProvider绑定到ListBox。

问题在于,当我在Visual Studio 2010中处于设计模式时,xml项目会正确显示,但是当我运行应用程序时,列表框只是空的。

这是我的xaml的样子。我没有使用任何代码,所以这就是:

<Window x:Class="WpfTest9_Binding.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="309" Width="622">
    <Window.DataContext>
        <XmlDataProvider XPath="Servers">
            <x:XData>
                <Servers>
                    <Server name="Server01" active="true" />
                    <Server name="Server02" active="false" />
                    <Server name="Testserver01" active="true" />
                    <Server name="Testserver02" active="true" />
                </Servers>
            </x:XData>
        </XmlDataProvider>
    </Window.DataContext>
    <Grid>
        <ListBox ItemsSource="{Binding XPath=*}" Margin="12">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border CornerRadius="5" Margin="5" BorderThickness="2" BorderBrush="#FFC14343">
                        <StackPanel Orientation="Horizontal" Margin="5">
                            <CheckBox IsChecked="{Binding XPath=@active}" />
                            <Label Content="{Binding XPath=@name}" />
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>

就像我上面说的那样,奇怪的是它看起来在设计模式下工作,但是当我运行应用程序时它无法填充列表框。我也没有收到任何错误消息或警告。

怎么了?

1 个答案:

答案 0 :(得分:1)

好的,解决方案非常简单。 正如本文Listbox content not being populated with content from xml when using XmlDataProvider所指出的,我所要做的就是向xml元素添加一个空名称空间属性。像这样:

<Servers xmlns="">
    <Server name="Server01" active="true" />
    <!-- ... -->
</Servers>