WPF XAML Datagrid XML文件绑定与XElement,XML文件在代码隐藏中加载

时间:2013-09-04 19:01:33

标签: wpf xml binding datagrid xelement

在这里,我们再次去看孩子,另一个露营者在WPF Databinding周围的树林里迷了路。这是一个攀登数据绑定倒置冰墙的富有成效的一天,但我的智慧结束了这一点。没有我找到的例子或SNOOP的数量正在帮助我找到我的问题。希望你们这三个人都有一些数据绑定的摇滚明星可以帮助一个brotha! :)

XML文件 - 更改了面孔和名称以保护无辜

    <?xml version="1.0" encoding="utf-8" ?>
<Mappings>
  <Mapping>
    <Class1>WonderBread</Class1>
    <Class2>Tortilla</Class2>
    <Properties>
      <Property>
        <Jx>name</Jx>
        <Dyn>Name</Dyn>
        <Create>1</Create>
        <Update>0</Update>
      </Property>
      <Property>
        <Jx>Juice</Jx>
        <Dyn>Juice</Dyn>
        <Create>1</Create>
        <Update>0</Update>
      </Property>
      <Property>
        <Jx>Fred</Jx>
        <Dyn>Fred</Dyn>
        <Create>1</Create>
        <Update>0</Update>
      </Property>
      <Property>
        <Jx>Love</Jx>
        <Dyn>Love</Dyn>
        <Create>1</Create>
        <Update>0</Update>
      </Property>
    </Properties>
  </Mapping>
</Mappings>

如何加载此XML文件并将其设置为我的datagrids DataContext。在构造函数中完成。这通过SNOOP正确加载我可以在DataContext中看到XML文件。

    // load the ObjectMappingXML file and set as Gridview Context
    XEClassMappings = XElement.Load(ConfigurationManager.AppSettings["ClassMappingXML"]);
    dgMapping.DataContext = XEClassMappings;

显示内容的XAML代码

        <DataGrid x:Name="dgMapping" ItemsSource="{Binding Path=Elements[Property]}" Height="569">
            <DataGrid.Columns >
                <DataGridTextColumn Header="JxAPI Prop" Binding="{Binding Path=Element[Jx].Value}"/>
                <DataGridTextColumn Header="Dyn Prop" Binding="{Binding Path=Element[Dyn].Value}"/>
            </DataGrid.Columns>
        </DataGrid>

我遗失的所有神圣的名字是什么? 8小时充满希望的F5让我陷入了恐慌......

1 个答案:

答案 0 :(得分:0)

您必须访问properties元素。将ItemsSource绑定更改为以下内容:

<DataGrid x:Name="dgMapping" ItemsSource="{Binding Path=Element[Mapping].Element[Properties].Elements[Property]}" Height="569">

它会起作用。

希望有所帮助