Elementos que no se muestran en WPF ListBox aunque se muestren en modo de diseño

Tengo algunos problemas con el enlace de datos en XAML y WPF. Específicamente, estoy tratando de vincular datos de un XmlDataProvider a un ListBox.

El problema es este, cuando estoy en modo de diseño en Visual Studio 2010, los elementos xml se muestran correctamente, pero cuando ejecuto la aplicación, el cuadro de lista está vacío.

Así es como se ve mi xaml. No estoy usando ningún código detrás, así que esto es todo lo que hay:

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

Como dije anteriormente, lo extraño es que parece que funciona en el modo de diseño, pero no llena el cuadro de lista cuando ejecuto la aplicación. Tampoco recibo ningún mensaje de error o advertencia.

¿Qué tiene de malo?

preguntado el 22 de mayo de 12 a las 17:05

1 Respuestas

Ok, la solución fue sorprendentemente simple. Como se ha señalado en esta publicación, El contenido del cuadro de lista no se completa con contenido de xml cuando se usa XmlDataProvider , todo lo que tenía que hacer era agregar un atributo de espacio de nombres vacío al elemento xml. Como esto:

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

contestado el 23 de mayo de 17 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.