2016-04-08 6 views
2

Ich habe eine MVVM Light WPF App in Visual Studio 2015. Eine ScrollViewer enthält den Inhalt in MainWindow.xaml, die wiederum eine TabControl enthält. Eine der TabItem-Steuerungen enthält eine DataGrid. Wenn der Benutzer eine Zeile der DataGrid klickt, zeigen wir die tcEmployeeDetailsTabControl, verpflichtet, die SelectedEmployee Eigenschaft auf der Ansicht Modell zum SelectedItem des Datengitters:Scrollen Sie zum Anfang eines Steuerelements mit ScrollViewer in 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> 

Wie kann ich die ScrollViewer nach oben scrollen von tcEmployeeDetails wenn der Benutzer eine Zeile der DataGrid ausgewählt hat?

Antwort

2

der Unterkunft um Ihre vm hinzufügen:

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

Bind diese Eigenschaft auf den Scroll des VerticalOffset.

<ScrollViewer VerticalOffset="{Binding ScrollViewerVerticalOffset}"> 

und ändern Sie Ihre Setter für SelectedEmployee:

public double _scrollViewerVerticalOffset 
{ 
    get { ... } 
    set { 
      if (this.SelectedEmployee != value) 
        ScrollViewerVerticalOffset = 0; 
     } 
} 
Verwandte Themen