2011-07-03 3 views
2

안녕하세요 저는 위 또는 아래가없는 목록 상자를 만들기 위해 마지막 항목의 다음 항목이 첫 번째 항목이고 그 반대의 경우도 반복되는 목록 상자를 만들고 싶습니다.Looping Listbox 만들기

WP7 툴킷에 LoopingSelector가 있지만 주변 장치가 페이드 인/아웃되고 중간에 항상 '선택된'항목이 있으므로 원하는 작업을 수행하지 못한다는 것을 알고 있습니다. 의 목록을 남길 수 있습니다 분할, 주기, 또는 다른 기능 (T의) 는 "LinkedList의 클래스 체인 지원하지 않습니다

은 내가 LinkedList의 수집 보았다하지만 루프를 지원하지 않는 것 일치하지 않는 국가. "

누구나 찾고있는 솔루션을 알고 있습니까? 아니면 현재 Listbox와 툴킷의 LoopingSelector를 하이브리드로 개발해야합니까?

많은 고맙습니다!

답변

1

나는 최근에 당신과 같은 문제가 있습니다! 나는 이것을 처리하기 위해 블렌드 4를 사용한다. 특정 시간에 특정 위치로 내 목록을 재설정하고 원래 목록의 앞뒤에 목록 사본을 추가한다.

예 : 내 목록 : 1-2-3-4-5-6, 알겠습니다. 1-2-3-4-5-6-1-2-3-4-5-6 -1-2-3-4-5-6 그리고 20 초마다 원래 위치로 리셋됩니다. 예 : 사용자가 항목 4에 있었던 경우 항목 4로 위치가 재설정되지만 가운데 목록에 위치합니다.

나는 현재 내 질문은 당신이 어떤 도움이 있는지 확인 여기에 있습니다 요구했다 : horizontal listbox that could be infinite circle scrolling

+0

안녕하세요 ng_ducnghia, 그래서 내가 제대로 이해하면 목록이 있고 그 목록에 두 번 원래 목록을 복사하므로 모든 항목에 대해 3 개의 인스턴스가 있습니까? 위치를 재설정하려면 ScrollIntoView 메서드를 사용합니까? – n00b

+0

안녕하세요 n00b, 최근에이 문제가 해결되었습니다. scrollviewer 안에 목록 상자가 있습니다 (목록 상자 스크롤을 비활성화해야 함) scrollviewer에 대한 조작 완료 이벤트를 사용합니다. 끝까지 스크롤하면 작업이 수행됩니다. 그런 다음 scrollToHorizontalOffset (또는 scrolltoVerticalOffset)을 0으로 사용하여 첫 번째 항목으로 이동합니다. –

0

사용에서 ScrollViewer는 목록 상자를 포함 참고 : ManipulationCompleted 이벤트를 넣고 (0)이 스크롤을 반복하도록 ScrolltoVerticalOffset를 사용합니다.

<ScrollViewer HorizontalScrollBarVisibility="Auto" Margin="-2,567,-1,0" x:Name="imagesScrollview" 
        Opacity="1" Grid.Row="1" RenderTransformOrigin="0.5,0.5" 
        ManipulationCompleted="imagesScrollview_ManipulationCompleted" Height="85" MouseLeftButtonDown="ScrollViewer_MouseLeftButtonDown"> 
     <ScrollViewer.Background> 
      <ImageBrush ImageSource="/PhoneApp11;component/Images/top_friends_float.png" /> 
     </ScrollViewer.Background> 
     <ListBox x:Name="listBox" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="Auto" Height="80" Background="{x:Null}"> 

      <ListBox.ItemTemplate> 
       <DataTemplate> 

및 조작 이벤트 : 어쩌면 내 코드가 도움이 될

 private void imagesScrollview_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e) 
    { 
     ScrollViewer scrollviewer = sender as ScrollViewer; 

     if (scrollviewer.HorizontalOffset > (listBox.ActualWidth - 700)) 
      scrollviewer.ScrollToHorizontalOffset(0); 
     else if (scrollviewer.HorizontalOffset < 100) 
      scrollviewer.ScrollToHorizontalOffset((listBox.ActualWidth - 487)); 
    } 

*** 공지 사항 : 나는 두 방법으로 루프 내에서 ScrollViewer를 할 수 있습니다.