2010-03-28 3 views
0

계층 적 컬렉션 모델을 만들기 위해 내 개체를 수정하려고합니다. 도움이 필요해. 내 객체는 좋은 및 GoodCategory 있습니다WPF TreeView의 컬렉션을 사용하도록 수업을 수정하는 방법

public class Good 
     { 
      int _ID; 
      int _GoodCategory; 
      string _GoodtName; 

      public int ID 
      { 
       get { return _ID; } 
      } 

      public int GoodCategory 
      { 
       get { return _GoodCategory; } 
       set 
       { 
        _GoodCategory = value; 
       } 
      } 

      public string GoodName 
      { 
       get { return _GoodName; } 
       set 
       { 
        _GoodName = value; 
       } 
      } 

      public Good(IDataRecord record) 
      { 
       _ID = (int)record["ID"]; 
       _GoodtCategory = (int)record["GoodCategory"]; 
      } 
    } 

    public class GoodCategory 
    { 
     int _ID; 
     string _CategoryName; 

     public int ID 
     { 
      get { return _ID; } 
     } 

     public string CategoryName 
     { 
      get { return _CategoryName; } 
      set 
      { 
       _CategoryName = value; 
      } 
     } 

     public GoodCategory(IDataRecord record) 
     { 
      _ID = (int)record["ID"]; 
      _CategoryName = (string)record["CategoryName"]; 
     } 
    } 

그리고 나는이 두 개체 컬렉션이 있습니다

public class GoodsList : ObservableCollection<Good> 
     { 
      public GoodsList() 
      { 
       string goodQuery = @"SELECT `ID`, `ProductCategory`, `ProductName`, `ProductFullName` FROM `products`;"; 

       using (MySqlConnection conn = ConnectToDatabase.OpenDatabase()) 
       { 
        if (conn != null) 
         { 
          MySqlCommand cmd = conn.CreateCommand(); 
          cmd.CommandText = productQuery; 

          MySqlDataReader rdr = cmd.ExecuteReader(); 
          while (rdr.Read()) 
          { 
           Add(new Good(rdr)); 
          } 
         } 
       } 
      } 
     } 

public class GoodCategoryList : ObservableCollection<GoodCategory> 
     { 
      public GoodCategoryList() 
      { 
       string goodQuery = @"SELECT `ID`, `CategoryName` FROM `product_categoryes`;"; 

       using (MySqlConnection conn = ConnectToDatabase.OpenDatabase()) 
       { 
        if (conn != null) 
         { 
          MySqlCommand cmd = conn.CreateCommand(); 
          cmd.CommandText = productQuery; 

          MySqlDataReader rdr = cmd.ExecuteReader(); 
          while (rdr.Read()) 
          { 
           Add(new GoodCategory(rdr)); 
          } 
         } 
       } 
      } 
     } 

그래서 나는 데이터베이스에서 데이터를 가져와 두 개의 컬렉션을 가지고 있습니다. 하지만 WPF TreeView에서 HierarchicalDataTemplate과 함께 thats 컬렉션을 사용하고 싶습니다. 나는 Hierarlichal Objects의 예와 함께 많은 포스트를 보았지만 스틸은 내 오브젝트를 계층 적으로 만드는 법을 모릅니다. 도와주세요.

답변

0

"상위"클래스에 컬렉션 속성을 추가하십시오 (저는 GoodCategory라고 생각합니다). 이 값을 IList<ChildType> 또는 ObservableCollection<ChildType>으로 설정할 수 있습니다. (당신이 GoodCategory에 제품을 추가 할 수 있도록 코드를 소모하지 않으려는 경우 또는, 읽기 전용 모음을 사용합니다.) 예를 들어 :

class GoodCategory 
{ 
    private ObservableCollection<Good> _goods = new ObservableCollection<Good>(); 

    public ObservableCollection<Good> Goods 
    { 
    get { return _goods; } 
    } 
} 

당신은이 컬렉션이 제대로 동기화되어 있는지 확인해야합니다 Good.GoodCategory 속성 - 예를 들어 Good.GoodCategory 속성이 변경되면 Good은 기존 GoodCategory.Goods 컬렉션에서 자신을 제거하고 새로운 GoodCategory의 Goods 컬렉션에 자신을 추가 할 수 있습니다. ORM이 수작업으로 만든 클래스와 SQL 문보다는 객체 관계형 매퍼를 사용한다면 ORM이 대신 처리해야합니다.

관련 문제