C# WPF数据绑定到窗口

C# WPF数据绑定到窗口,c#,wpf,data-binding,listbox,C#,Wpf,Data Binding,Listbox,我想将listbox项的数据绑定链接到一个新窗口 “名称”按钮应打开一个新窗口,其中包含listbox项的数据绑定 绑定是一个.xml文件: 新窗口应该链接到Person的Name元素 虽然会有不止一个人,但窗口应该链接到正确的人 这是XmlDataProvider: <XmlDataProvider x:Name="XmlData" Source="People.xml" XPath="/People/Person" /> 列表框的绑定如下所示: 除非DataContex

我想将listbox项的数据绑定链接到一个新窗口

“名称”按钮应打开一个新窗口,其中包含listbox项的数据绑定

绑定是一个.xml文件:


新窗口应该链接到Person的Name元素

虽然会有不止一个人,但窗口应该链接到正确的人

这是XmlDataProvider:

<XmlDataProvider x:Name="XmlData" Source="People.xml" XPath="/People/Person" />

列表框的绑定如下所示:


除非
DataContext
设置为
XmlData
您的
ItemsSource
绑定将无法工作。您没有提到定义
XmlDataProvider
的位置,因为如果在
Resources
中,则需要指定
x:Key
,而不是
x:Name
,然后必须将其指定为
Binding.Source
。您也没有说明什么是
People.xml
,因为它必须作为资源添加到您的解决方案中

<Window ...>
    <Window.Resources>
        <XmlDataProvider x:Key="XmlData" XPath="/People/Person" Source="People.xml"/>
    </Window.Resources>
    <ListBox ItemsSource="{Binding Source={StaticResource XmlData}}">
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{}{0}, {1} {2}">
                            <Binding XPath="Name/@last_name" />
                            <Binding XPath="Name/@first_name" />
                            <Binding XPath="Name/@second_name" />
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Window>


或者您可以通过在代码中手动设置
XmlDataProvider.Source
来手动加载它。您的问题是什么?我如何才能做到这一点,因为它只打开第一个人请显示一些代码。我已经添加了一些代码