C# WPF将XML数据绑定到GUI项

C# WPF将XML数据绑定到GUI项,c#,wpf,xaml,C#,Wpf,Xaml,我是WPF的新手,还没有完全掌握事情应该怎么做 我有一个存储配置数据的xml文件,我希望这个xml文件中的数据显示在gui前端 我目前正在使用一个XmlDataProvider来读取一组数据 数据大致如下: <Items> <Item name="item01"> <Position x="0", y="0"/> </Item> <Item name="item02"> <Position x="0",

我是WPF的新手,还没有完全掌握事情应该怎么做

我有一个存储配置数据的xml文件,我希望这个xml文件中的数据显示在gui前端

我目前正在使用一个XmlDataProvider来读取一组数据

数据大致如下:

<Items>
  <Item name="item01">
    <Position x="0", y="0"/>
  </Item>
  <Item name="item02">
    <Position x="0", y="0"/>
  </Item>
  <Item name="item03">
    <Position x="0", y="0"/>
  </Item>
</Items>

XmlDataProvider声明为资源,如下所示

<Window.Resources>
    <XmlDataProvider x:Key="SiteConfigFile"  XPath="SiteConfig" >
    </XmlDataProvider>
</Window.Resources>

然后,我启用一个组合框,通过下拉菜单显示Xml文件中的每个项目,使用:

<ComboBox Name="ButtonMapping" ItemsSource="{Binding Source={StaticResource SiteConfigFile}, XPath=Items/Item}" DisplayMemberPath="@name" SelectedIndex="0">

这一切都很好


我现在想解决的问题是。。。根据从组合框中选择的项目,相应的Position元素及其2个属性需要显示在gui上的atextbox中。。。我是否需要生成动态XPath,这似乎有点混乱。。。最好的方法是什么,我没有主意:(

将文本框包装在几个面板中如何?参见下面的示例。我使用了一个外部面板(边框),其DataContext绑定到ComboBox.SelectedItem属性。然后是另一个内部面板(StackPanel)绑定到XML中的元素。最后,在这个内部面板中,我放置了文本绑定到@x和@y的TextBox控件

<Border DataContext="{Binding ElementName=ButtonMapping, Path=SelectedItem}">
    <StackPanel DataContext="{Binding XPath=Position}">
        <TextBlock Text="x:"/>
        <TextBox Text="{Binding XPath=@x}"/>
        <TextBlock Text="y:"/>
        <TextBox Text="{Binding XPath=@y}"/>
    </StackPanel>
</Border>

请注意,我使用了两个文本框来显示x和y属性。如果只想使用其中一个,则必须使用IValueConverter来正确“格式化”要显示的字符串