2012-07-19 5 views
0

이 질문은 this과 같을 수 있지만 구현이 다릅니다. 난 단지항목 클래스의 날짜 값을 기준으로 ObservableCollection을 정렬

내 클래스의 ObservableCollection에 다음 한 나의 새로운 구현을 위해 그 예를 사용하고, 나는 컬렉션 내 윈도우 폰 7 응용 프로그램

public ObservableCollection<CustomClass> myList = new ObservableCollection<CustomClass>(); 

에서 나는 다음과 같은 방법을 시도 것을 사용하여 내 목록 상자에 데이터를 바인딩하고 하지만 내 클래스

제대로 발생하지 정렬이

public class CustomClass : IComparable<CustomClass> 
{ 
public string Id { get; set; }   
public string Name { get; set; }   
public string CreatedDate get{ get; set; } 

public int CompareTo(CustomClass other) 
    { 
     var compareDate1 = DateTime.Parse(CreatedDate); 
     var compareDate2 = DateTime.Parse(other.CreatedDate); 
     return compareDate2.CompareTo(compareDate1); 

    } 
} 

SUB 클래스

public class ComparingObservableCollection<T> : ObservableCollection<T> 
where T : IComparable<T> 
{ 

protected override void InsertItem(int index, T item) 
{ 
    if (!Items.Contains<T>(item)) 
     { 
      try 
      { 
       var bigger = Items.First<T>(F => F.CompareTo(item) > 0); 
       index = Items.IndexOf(bigger); 
      } 
      catch 
      { 
       index = Items.Count; 
      } 
      finally 
      { 
       base.InsertItem(index, item); 
      } 
     } 
    } 
} 

문제는 논리 아니라, 입력 날짜 함께, 내가 코드 아래 년 을 확인하지 않고 다음 십오일 createddates를 조회하고이 동작하지만, DEC/1월 개월

을의 일을 처리해야한다

은 UPDATE 내 사용자 정의 클래스는

public class CustomClass : IComparable<CustomClass> 
{ 
public string Id { get; set; } 
public string Name { get; set; } 
public DateTime Created { get; set; } 

private string _CreatedDate; 
public string CreatedDate 
{ 
    private get 
    { 
     return _CreatedDate; 
    } 
    set 
    { 
     Created = DateTime.Parse(value); 
     _CreatedDate = value; 
    } 
} 

public CustomClass(string id, string name, string created) 
{ 
    Id = id; 
    Name = name; 
    CreatedDate = created; 
} 

public int CompareTo(CustomClass other) 
{ 
    return CreateDate.Date.DayOfYear.CompareTo(other.CreateDate.Date.DayOfYear); 
} 
} 

답변

1

원하는 경우이 클래스는 분류 한 것으로 자체 (CreatedDate)에 의해

public class CustomClass : IComparable<CustomClass> 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public DateTime Created { get; set; } 

    private string _CreatedDate; 
    public string CreatedDate 
    { 
     private get 
     { 
      return _CreatedDate; 
     } 
     set 
     { 
      Created = DateTime.Parse(value); 
      _CreatedDate = value; 
     } 
    } 

    public CustomClass(string id, string name, string created) 
    { 
     Id = id; 
     Name = name; 
     CreatedDate = created; 
    } 

    public int CompareTo(CustomClass other) 
    { 
     return Created.CompareTo(other.Created); 
    } 
} 

public class ComparingObservableCollection<T> : ObservableCollection<T> where T : IComparable<T> 
{ 
    // this function presumes that list is allways sorted and index is not used at all 
    protected override void InsertItem(int index, T item) 
    { 
     if (!Items.Contains<T>(item)) 
     { 
      try 
      { 
       var bigger = Items.First<T>(F => F.CompareTo(item) > 0); 
       index = Items.IndexOf(bigger); 
      } 
      catch 
      { 
       index = Items.Count; 
      } 
      finally 
      { 
       base.InsertItem(index, item); 
      } 
     } 
    } 
} 
+0

내가 그것을 시도하고 또한 제대로 – Raghuveer

+0

가 제대로 작동하지 않는 그 무엇을 정렬하지 내 질문에서 언급? – Stig

+0

날짜별로 정렬하지 않으면 모음의 항목 순서가 올바르지 않습니다. – Raghuveer

관련 문제