自定义WPF datagrid标头和xml绑定

时间:2014-03-20 07:55:38

标签: c# wpf data-binding datagrid wpfdatagrid

我一直在试图弄清楚如何重新创建这个“复杂”数据网格标题,绑定到XML文件。我还没有找到任何关于如何解决这个问题的例子。

这是一个示例XML数据文件(可以有更多'传感器'和更多'措施'):

<?xml version="1.0" encoding="utf-8" ?>
<ShipData>
  <Draught>
    <Measures>
      <Mdata>M1</Mdata>
      <Mdata>M2</Mdata>
    </Measures>
    <Sensor Name="Sensor1">
      <Measurement>
        <Bis>45</Bis>
        <Man>43</Man>
      </Measurement>
      <Measurement>
        <Bis>44</Bis>
        <Man>46</Man>
      </Measurement>
    </Sensor>
    <Sensor Name="Sensor2">
      <Measurement>
        <Bis>45</Bis>
        <Man>43</Man>
      </Measurement>
      <Measurement>
        <Bis>43</Bis>
        <Man>45</Man>
      </Measurement>
    </Sensor>
  </Draught>
</ShipData>

这就是我设计数据网格的方式:

datagrid with customized double-lined header

由于数据可以更改(更多传感器和更多测量),我将在加载数据网格后做一些代码。

编辑: 所以我要做的事情是:

  1. 创建标题(由两行组成,上面一行跨越两列)

    (已解决)&gt;&gt;由于您无法真正跨越标题的多个列,因此最好的方法是在Datagrid上方创建一个网格,并使其等于possible solution

    你可以玩:

    <DataGrid.Columns>
      <DataGridTemplateColumn>
        <DataGridTemplateColumn.HeaderTemplate>                                    
          <DataTemplate> ...
    

    ......但它变得丑陋......至少在这里。我不认为HeaderTemplate用于我想做的事情。

  2. 将xml数据绑定到网格

    仍在弄清楚(以及如何将对数据的更改保存回文件)

  3. 最好通过代码

1 个答案:

答案 0 :(得分:0)

我解决了关于&#34; super&#34;的问题。标题(见上例):

  

由于您无法真正跨越标题的多个列,因此最好的方法是创建一个网格,位于Datagrid上方,具有相等的列大小(或超级标题的组合大小)

我正在努力解决xmlprovider和xpath背后的代码问题(但我会提出一个新问题,不再进一步污染这个问题)