2013-10-28 2 views
0

ItemsSource가 문자열 목록에 바인딩 된 표가 있습니다. ItemsSource에서 요소를 제거하면 ScrollBar가 제거 된 요소로 이동하므로 문제가됩니다.ItemsSource 요소를 삭제할 때 ScrollBar가 움직이는 이유는 무엇입니까?

예를 들어, 내 표에 100 개의 행이 있습니다. 사용자가 100 번째 행에 초점을 맞추고 있습니다. 사용자가 첫 번째 행을 제거하라는 명령을 내립니다. ScrollBar가 두 번째 행으로 이동합니다.

이 동작을 피하는 방법이 있습니까?

감사합니다.

답변

0

코드를 알려주십시오. 환경 설정을 그리드에 어떻게 설정했는지보고 싶습니다. 목록에서 무언가를 바꿀 때 ItemsSource의 가치를 다시 설정하고 있다고 말해주십시오. ObservableCollection을 사용하고 있습니까?

어쨌든 이것에 대해 자세히 살펴보십시오. 어쩌면 이것은 당신이 찾고있는 무엇 : IsSynchronizedWithCurrentItem가 스크롤을 방지한다

http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.issynchronizedwithcurrentitem%28v=vs.110%29.aspx

<ListBox Name="employeeListBox1" 
     ItemsSource="{Binding Source={StaticResource Employees}}" 
     ItemTemplate="{StaticResource EmployeeItemTemplate}" 
     IsSynchronizedWithCurrentItem="True"/> 

은 권한이없는 이동 될 수 있습니다. :)

+0

itemsSource에서 요소를 추가하거나 제거 할 때 재설정하지 않고 Add()/AddRange() 및 Remove()/RemoveRange() 메서드를 사용합니다. 내 ItemsSource는 ObservableCollection이 아니지만 인터페이스를 업데이트 할 수는 없습니다. 아쉽게도 IsSynchronizedWithCurrentItem 속성은 동작을 변경하지 않습니다. –

+0

목록을 ObservableCollection으로 만들어야합니다. –

+0

예 ... 나는 그것이라고 생각했지만 당신이 그것을 요구 한 후에 나는 깨달았습니다. 이게 내 문제의 근원이 될 수 있니? –