2010-11-12 54 views
6

Tôi đang sử dụng mô hình chế độ xem để liên kết với chế độ xem danh sách. Mỗi khi tôi thêm một mục trong bộ sưu tập quan sát nội bộ mô hình khung nhìn, tôi kích hoạt một thuộc tính LastIndex với danh sách.Count-1. Chế độ xem danh sách được liên kết với quyền ưu tiên LastIndex này của VM và listview sẽ chọn đúng mục cuối cùng được thêm vào khung nhìn. Rất tiếc, chế độ xem không thể cuộn mục được thêm vào lần cuối vào chế độ xem.Cách đưa vào chế độ xem danh sách xem danh sách được thêm gần đây trong Danh sách WPF

Tôi đã thử đặt IsSynchronizedWithCurrentItem = "True" trên đánh dấu chế độ xem danh sách, nhưng nó không giúp ích gì.

Đây là đánh dấu Tôi đang sử dụng

<ListView ItemsSource="{Binding Path=Status.Messages}" 
     SelectedIndex="{Binding Path=Status.LastIndex, Mode=OneWay}" 
     ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
     ScrollViewer.VerticalScrollBarVisibility="Auto" 
     HorizontalAlignment="Stretch" 
     Height="60" 
     IsSynchronizedWithCurrentItem="True" > 
    <ListView.Resources> 
     <Style TargetType="{x:Type GridViewColumnHeader}"> 
      <Setter Property="Visibility" Value="Collapsed" /> 
     </Style> 
    </ListView.Resources> 
    <ListView.View> 
     <GridView AllowsColumnReorder="False" > 
      <GridViewColumn> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Path=.}" FontWeight="Thin" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
    <ListView. 
</ListView> 

Bất kỳ sự giúp đỡ trong vấn đề này sẽ được rất nhiều đánh giá cao

Trả lời

15

Bạn cần phải gọi ScrollIntoView:

list.ScrollIntoView(list.Items[list.Items.Count - 1]); 

http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.scrollintoview.aspx

EDIT :

Và đây là một cách để làm điều đó trong XAML:

http://michlg.wordpress.com/2010/01/16/listbox-automatically-scroll-currentitem-into-view/

+0

này thực sự giải quyết nó. Cảm ơn một triệu .. – siva

+1

Tôi sẽ làm điều này trong XAML bởi vì đó là cách đúng nhất cho MVVM nhưng đó chỉ là quá nhiều thứ để làm phiền. Tôi ngạc nhiên rằng đây không chỉ là tài sản mà bạn phải đặt thành true hoặc false tùy thuộc vào việc bạn có muốn giữ lại phần bổ sung mới nhất trong tiêu điểm hay không. – LJNielsenDk

Các vấn đề liên quan