나는 현재 설정 목록 상자를 가지고 :옵니다 ScrollIntoView 신뢰할 수없는 selectedItem가
DetailsList.DataContext = details;
다음했던 버튼 :
details.Add(System.DateTime.Now.ToString("HH:mm:ss ") + someString);
DetailsList.UpdateLayout();
var lastItem = DetailsList.Items[DetailsList.Items.Count - 1];
DetailsList.SelectedItem = lastItem;
DetailsList.ScrollIntoView(lastItem);
는 목록의 마지막 항목을 선택하고로 이동하지만, 그것은 단지 그것을 시간의 약 75 %를 수행해야한다고. 대신, 종종 두 번째 마지막을 선택하고 그 대신에 스크롤 할 것입니다.
스크롤 및 선택 항목을 LayoutUpdated 이벤트 핸들러로 옮겨 보았습니다. 변경하지 않았습니다.
두 개의 별도 버튼을 추가해 보았습니다. 하나는 추가하고 하나는 선택하고 스크롤합니다. 한 번에 하나의 항목을 추가 한 다음 스크롤하면 약간 더 안정적으로 보입니다. 이는 90 %의 시간 동안 작동합니다. 스크롤하기 전에 6 가지 항목을 추가하면 거의 작동하지 않습니다. 일반적으로 새 항목 중 하나를 선택하지만 마지막 항목은 선택하지 않습니다.
내가 잘못했거나 System.Windows.Controls.ListBox에 버그가 있습니까?
'someString'은 무엇인가요? 항상 같은 가치입니까? 초당 1 번 이상 버튼을 누르면 평등 문제가 발생할 수 있습니다. –
가치가 중요하다고 생각하지 않았습니다. 예, 버튼 테스트의 경우 일정했습니다. 동일한 내용의 요소를 구별 할 수있는 방법이 없다는 뜻입니까? "실제"데이터가 동일 할 수도 있고 1 초에 여러 번 추가되는 경우도 있습니다. –
값이 중요 할 수 있습니다. ListBox에서 SelectedItem을 설정하면 선택할 항목을 찾기 위해 해당 항목에 대해 Equals 메서드를 호출합니다. 같은 텍스트를 가진 두 개의 문자열이 있다면 그 중 어느 것이 의미하는지 파악할 수 없으며 관찰 된 동작을 얻습니다. –