2011-12-12 3 views
7

사용자가 목록 상자의 맨 아래에있을 때 게으른 "로드가 더 많은"항목을 구현하려고 시도하지만 매번 새 항목을 목록 상자에 추가하려고하면 결과가 좋아집니다. 이 :읽기 전용 컬렉션에서 작업이 지원되지 않습니다. C# wp7

"읽기 전용 모음에서 작업이 지원되지 않습니다."

나는 이미 포럼에서 블로그에 이르기까지 여러 가지 해결책을 시도해 보았지만 아무 것도 작동하지 않습니다. 심지어 나를 위해 약간 이상하게 보이는 문제의 논리를 이해할 수 없다.

기본적으로 항목 목록을로드하고 목록 상자의 항목 소스로 할당하고 있습니다. 사용자가 목록의 맨 아래에 도달 할 때 ItemSourceItems 컬렉션된다 읽기 전용으로 사용하는 경우

wineFilterListBox.ItemsSource = wines; 

, 내가

public ObservableCollection<Wine> wines; 
... 

    if (atBottom) 
    { 
     int Count = page.wineFilterListBox.Items.Count; 
     int end = Count + 10; 
     for (int i = Count; i < end; i++) 
     { 
      page.LoadWineList(Count); 
     } 
    } 
... 

    private void LoadWineList(int Count = 1) 
    { 
    ... 
     wineFilterListBox.Items.Add(wines); 
    } 

답변

9

(단지 WP7에 대한 트위터 응용 프로그램처럼) 더 많은 항목을 추가 할 수 있습니다. ListBoxItems 속성 대신 컬렉션에 데이터를 추가해야하는 것처럼 들립니다. 특히 ItemsControl.ItemSource Property

,이 섹션 :

은 MSDN을 참조하십시오

ItemsSource 속성이 설정되어있는 경우, Items 컬렉션이 만들어 읽기 전용 및 고정 크기입니다. 에서 당신은 객체에 ItemsSource를 설정해야합니다

INotifyCollectionChanged 인터페이스를 구현되도록 변경 : 직접 wines 컬렉션 컬렉션은`ObservableCollection에이 '이기 때문에이 항목을 추가

시도 컬렉션 은 ItemsControl에 반영됩니다. ObservableCollection (Of T) 클래스는 이러한 개체를 정의합니다. 의도적 ItemsSource 을 설정 ObservableCollection를 사용하려는 해달라고하면

+0

감사가되지 당신의 wineFilterListBox.Items

for (int i = Count; i < 10; i++) { wineFilterListBox.Items.Add(new Wine()); } 

이 원인 수동으로 wineFilterListBox.ItemsWine를 추가 할 수 있습니다. 마지막 줄을 제거하면됩니다. "wineFilterListBox.Items.Add (와인);" ObservableCollection을 사용하는 동안 기본 기능을 놓친 수많은 솔루션을 시도했습니다. 와인 목록에 추가하는 것만으로도 목록 상자를 업데이트 할 수있었습니다. –

+0

@ BrunoNunes : 문제 없습니다! 항상 우리를 사로 잡는 작은 것들입니다 :-) –

관련 문제