【问题标题】:Datagrid and observable collection数据网格和可观察的集合
【发布时间】:2011-10-25 17:30:13
【问题描述】:

嗨,我有一个数据包类型的数据包列表的 Observable 集合。每个数据包由 3 个不同的可观察类型数据集合组成。这 3 个不同的 observable 集合是 header 类、frame 类和 tail 类。我正在尝试提取类型数据的值并将它们放在数据网格中的一列下。框架和尾部相同。但是,我如何着手将 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>

【问题讨论】:

  • 能贴出Packet类的代码吗?
  • 代码已更新。我想知道数据网格是否能够在不检查数据类型的情况下显示我的标题、框架或尾部类的内容?
  • 能否也显示 DataGrid 的 XAML?
  • 我还没有添加 dgrid.DataContext 语句,因为我不确定如何呈现我上面的问题
  • 这里要明确一点 - HeaderFrameTail 都是包含 ObservableCollection&lt;Data&gt; 的类?它们是否包含其他内容?您是否希望在数据网格中有一个用于Header 的列,一个用于Frame 和一个用于Tail 的列?对吗?

标签: c# wpf


【解决方案1】:

如果我的意图是正确的,您需要一个网格来显示三个不同的集合,每个集合都独立于其他两个集合。也就是说,简而言之,不可能。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2016-06-14
    • 2014-09-01
    • 1970-01-01
    相关资源
    最近更新 更多