c# - 从 Xml 数据制作嵌套数据网格的问题
问题描述
我正在尝试使用序列化/反序列化显示包含在 xml 文件中的一些数据。我实际上在制作视图以显示 XML 文件的内容时遇到问题。
我正在尝试做的实际上是使网格布局看起来像这样:
Xml 结构是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<Car Title="Audi">
<Modele>A3</Duration>
</Car>
<Car Title="Peugeot">
</Car>
<4x4 Title="Audi">
<Options Number="1">
<Technology Title="Moteur">
</Technology>
<Technology Title="Roue">
</Technology>
</Options>
<Options Number="2">
<Technology Title="Roue">
</Technology>
<Technology Title="Moteur">
</Technology>
</Options>
</4x4>
</Data>
我所做的实际上远非我想要的:
<WrapPanel HorizontalAlignment="Right" Orientation="Vertical">
<StackPanel>
<Label Content="Cars" HorizontalContentAlignment="Center" FontSize="14" FontWeight="Bold"/>
<DataGrid AutoGenerateColumns="True" >
<DataGrid.Columns>
<DataGridTextColumn Header="Marque" Binding="{Binding Marque}" />
<DataGridTextColumn Header="Modele" Binding="{Binding Modele}" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
<StackPanel>
<Label Content="4x4" HorizontalContentAlignment="Center" FontSize="14" FontWeight="Bold"/>
<DataGrid AutoGenerateColumns="True" >
<DataGrid.Columns>
<DataGridTextColumn Header="Marque" Binding="{Binding Marque}" />
<DataGridTextColumn Header="Options" Binding="{Binding Options}" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</WrapPanel>
以及我的代码中 xml 文件的完整映射:
[KnownType(typeof(Cars))]
[KnownType(typeof(4x4))]
[KnownType(typeof(Options))]
public abstract class DataItem
{
[XmlAttribute]
public string Marque{ get; set; }
}
[DataContract ,XmlRoot(ElementName = "Data")]
public class Data
{
[XmlElement("Cars", Type=typeof(Cars))]
[XmlElement("4x4", Type=typeof(4x4))]
[DataMember]
public List<DataItem> Items { get; set; }
}
[XmlRoot(ElementName = "4x4")]
public class 4x4: DataItem
{
[XmlElement(ElementName = "Options", Type=typeof(Options))]
public List<Options> Options{ get; set; }
}
[XmlRoot(ElementName = "Options")]
public class Options
{
[XmlAttribute(AttributeName = "Number")]
public int Number { get; set; }
[XmlElement(ElementName = "Components", Type=typeof(Components))]
public List<Technology> Technologys { get; set; }
}
[XmlRoot(ElementName = "Cars")]
public class Cars : DataItem
{
[XmlElement(IsNullable = true)]
public Nullable<int> Modele { get; set; }
}
public class Technology : DataItem
{
}
解决方案
推荐阅读
- haskell - 从 url 获取数据并在 Haskell 上解析它的最佳方法是什么?
- python - 使用 numpy.ones 作为数组的索引
- android - 无法添加 socket.io 库
- spring - 使用activiti引擎执行新创建的流程工作流,无需重启服务器
- docker - docker镜像可以用作可启动镜像吗
- python - tf.keras & tf.estimator & tf.dataset
- wordpress - 自定义帖子类型类别及其帖子列表
- angularjs - 这是使用 angularjs 导出到 Excel 的正确方法吗
- visual-studio - 我的批处理文件没有在构建后事件中运行
- java - 钩子不在 Cucumber 4 中运行