Datagrid和可观察的集合

时间:2011-10-25 17:30:14

标签: c# wpf

嗨我有一个Observable类型包的包列表集合。每个数据包由3个不同的可观察类型数据集合组成。这3个不同的可观察集合是头类,帧类和尾类。我试图提取类型数据的值,并将它们放在datagrid中的一列下。框架和尾部相同。但是,我如何在一列下进行observableCollection数据的绑定?

namespace macframe
{
    public class Packet
    {
    private ObservableCollection<Packet> items;
    private Header header;
    private Frame frame;
    private Tail tail;

    public Packet(Header header, Frame frame, Tail tail)
    {
        this.header = header;
        this.frame = frame;
        this.tail = tail;
        items = new ObservableCollection<Packet>();
    }
}

public class Data
{
  private String sDatavalue;
  public Data(String datavalue)
  {
      this.sDatavalue = datavalue;
  }

  public string datavalue
  {
      get { return sDatavalue; }
      set { sDatavalue = datavalue; }
  }
}


public class Header
{
    private ObservableCollection<Data> headerItems;

    public Header()
    {
        headerItems = new ObservableCollection<Data>();
    }
    public ObservableCollection<Data> header
    { get { return headerItems; } }
}

public class Frame
{
    private ObservableCollection<Data> frameItems;

    public Frame()
    {
        frameItems = new ObservableCollection<Data>();
    }
    public ObservableCollection<Data> frame
    { get { return frameItems; } }
}

public class Tail
{
    private ObservableCollection<Data> tailItems;

    public Tail()
    {
        tailItems = new ObservableCollection<Data>();
    }
    public ObservableCollection<Data> tail
    { get { return tailItems; } }
}

}

<Window x:Class="macframe.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <DataGrid Name="dgrid">

    </DataGrid>
</Grid>

1 个答案:

答案 0 :(得分:0)

如果我的意图正确,您希望单个网格显示三个不同的集合,每个集合独立于其他两个集合。也就是说,削减事项简短,不可能。

您可以将网格绑定到仅一个源(设置ItemsSource属性),并且必须是一个集合类型才能使其工作(WPF自动生成一个CollectionView周围的属性绑定到ItemsControls)。

如果有办法以平面方式关联您的数据,您应该这样做。但对我来说,看起来你的目的是显示分层数据...请提供一个简短的样本记录列表(假数据已经足够了),这样我们就可以看到你希望你的网格看起来像什么。