2016-04-08 5 views
2

У меня есть приложение MVVM Light WPF в Visual Studio 2015. A ScrollViewer содержит содержимое в MainWindow.xaml, которое, в свою очередь, содержит TabControl. Один из элементов управления TabItem содержит DataGrid. Когда пользователь нажимает на строку DataGrid мы показать tcEmployeeDetailsTabControl, используя SelectedEmployee свойства на модели представления, связанного с SelectedItem сетки данных:Прокрутите вверх до элемента управления с помощью ScrollViewer в MVVM

<ScrollViewer> 
    <Border> 
     <DockPanel> 
      <TabControl> 
       <TabItem> 
        <!-- Search controls go here... --> 

        <DataGrid SelectedItem="{Binding SelectedEmployee}"> 
         <!-- DataGrid columns here... --> 
        </DataGrid> 

        <!-- How do I scroll the ScrollViewer to here? --> 
        <TabControl x:Name="tcEmployeeDetails"> 
         <!-- TabItems go here... --> 
        </TabControl> 
       </TabItem> 
       <TabItem> 
        <!-- Other items here... --> 
       </TabItem> 
      </TabControl> 
     </DockPanel> 
    </Border> 
</ScrollViewer> 

Как можно прокручивать ScrollViewer к началу tcEmployeeDetails, когда пользователь выбрал строку DataGrid?

ответ

2

Добавить объект в виртуальной машины:

private double _scrollViewerVerticalOffset; 
public double ScrollViewerVerticalOffset 
{ 
    get { return _scrollViewerVerticalOffset; } 
    set { _scrollViewerVerticalOffset = value; } 
} 

BIND это свойство к ScrollViewer-х VerticalOffset.

<ScrollViewer VerticalOffset="{Binding ScrollViewerVerticalOffset}"> 

И измените Присваиватель SelectedEmployee:

public double _scrollViewerVerticalOffset 
{ 
    get { ... } 
    set { 
      if (this.SelectedEmployee != value) 
        ScrollViewerVerticalOffset = 0; 
     } 
} 
Смежные вопросы