2013-01-09 2 views
1

ObservableCollection ObservableCollection을 다른 개체 내에 추가해야합니다. 가능합니까?ObservableCollection 내에 ObservableCollection 추가

문제는 각 (item.nombreWidget)이 둘 이상 (item.nombreServicio)을 포함한다는 것입니다. ObservableCollection of nombreWidget 내에 ObservableCollection 서비스가 필요합니다.

+0

이것은 C? Java가 아닙니다. –

답변

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) 
} 
+0

ObservableCollection 유형의 WidgetCollectionItem에 "Services"속성을 추가하고 서비스를 정의하는 클래스를 만들 것을 고려할 수 있습니다 – kindasimple

0

좋은 아이디어 kindasimple을,하지만 여전히 내가 원하는 것을 표시 할 수 없습니다. 나는 XML 데이터를 잡아, 이들은 그들 그리드

에 표시 할 최종 결과는 다음과 같다 :

nombreWidget1 nombreServicio1

nombreWidget2 nombreServicio2 nombreServicio2 nombreServicio2

nombreWidget가있는 경우 하나의 서비스 만 괜찮습니다.하지만 nombreWidget nombreServicio가 두 개 이상인 경우 화면에 잘 표시 할 수 없습니다.

:

나는 나에게 그리드의 모든 데이터를 표시하지 않습니다 여전히

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

는 내가 달성하기 위해 원하는 걸 얻었처럼

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

이 보이는 ObservableCollection에를 포함합니다 ObservableCollection에 필요하지만, 이전 솔루션 :

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 데이터 그리드에도 어떻게 가야합니까?