1

我需要在另一个中添加一个 ObservableCollection ObservableCollection,这可能吗?

Items = new ObservableCollection<WidgetCollectionItem>();

            foreach (XElement wid in document.Root.Elements("widget"))
            {
                WidgetCollectionItem item = new WidgetCollectionItem();

                item.nombreWidget = wid.Attribute("caption").Value;

                foreach (XElement service in wid.Elements("service"))
                {
                    item.nombreServicio = service.Attribute("caption").Value;
                    item.valor = service.Element("xvalue").Value;
                    item.color = service.Element("xcolor").Value;
                    item.alerta = service.Element("xalert") != null ? service.Element("xalert").Value : null;
                    Items.Add(item);
                }
            }

问题是每个 (item.nombreWidget) 包含多个 (item.nombreServicio)。我需要一个 ObservableCollection 内的 ObservableCollection 的 observableCollection 的 nombreWidget

4

3 回答 3

0

是的你可以。

new ObservableCollection<ObservableCollection<WidgetCollectionItem>>()

所以你可以做这样的事情:

Items = new ObservableCollection<ObservableCollection<WidgetCollectionItem>>();

foreach (XElement wid in document.Root.Elements("widget"))
{
    ObservableCollection<WidgetCollectionItem> services = new ObservableCollection<WidgetCollectionItem>();

    foreach (XElement service in wid.Elements("service"))
    {
        WidgetCollectionItem widget = new WidgetCollectionItem();
        widget.nombreWidget = wid.Attribute("caption").Value;
        widget.nombreServicio = service.Attribute("caption").Value;
        widget.valor = service.Element("xvalue").Value;
        widget.color = service.Element("xcolor").Value;
        widget.alerta = service.Element("xalert") != null ? service.Element("xalert").Value : null;
        services.Add(widget);
    }
    Items.Add(services)
}
于 2013-01-09T16:10:23.397 回答
0

看起来我得到了我想要实现的目标,但仍然没有显示网格中的所有数据:

之前的解决方法:

Items = new ObservableCollection<WidgetCollectionItem>();

            foreach (XElement wid in document.Root.Elements("widget"))
            {
                WidgetCollectionItem widget = new WidgetCollectionItem();
                widget.nombreWidget = wid.Attribute("caption").Value;

                foreach (XElement service in wid.Elements("service"))
                {
                    ServiciosWidgetCollectionItem ser = new ServiciosWidgetCollectionItem();
                    widget.ItemsSer = new ObservableCollection<ServiciosWidgetCollectionItem>();

                    ser.nombreServicio = service.Attribute("caption").Value;
                    ser.valor = service.Element("xvalue").Value;
                    ser.color = service.Element("xcolor").Value;
                    ser.alerta = service.Element("xalert") != null ? service.Element("xalert").Value : null;

                    widget.ItemsSer.Add(ser);
                }
                Items.Add(widget);
            }


public class WidgetCollectionItem
{
    public string nombreWidget { get; set; }
    public ObservableCollection<ServiciosWidgetCollectionItem> ItemsSer { get; set; }
}


public class ServiciosWidgetCollectionItem
{
    public string nombreServicio { get; set; }
    public string valor { get; set; }
    public string color { get; set; }
    public string alerta { get; set; }
}

我如何也进入数据网格 ObservableCollection?

于 2013-01-10T12:07:44.933 回答
0

好主意有点简单,但仍然无法显示我想要的。我抓取了一个 xml 数据,这些数据希望它们显示在网格中

最终结果将是这样的:

名称小部件 1 名称服务 1

nombreWidget2 nombreServicio2 nombreServicio2 nombreServicio2

如果 nombreWidget 只有一项服务很好,但如果您有多个 nombreWidget nombreServicio,我无法在屏幕上很好地显示

我需要 ObservableCollection

public class WidgetCollectionItem
{
    public string nombreWidget { get; set; }
}

包含一个 ObservableCollection

public class WidgetServiciosCollectionItem 
{
        public string nombreServicio { get; set; }
        public string valor { get; set; }
        public string color { get; set; }
        public string alerta { get; set; }
}
于 2013-01-10T09:33:14.767 回答