使用MVVM中的ScrollViewer滚动到控件的顶部

时间:2016-04-08 12:57:45

标签: c# wpf datagrid scrollviewer

我在Visual Studio 2015中有一个MVVM Light WPF应用程序。ScrollViewer包含MainWindow.xaml中的内容,而TabControl中的内容又包含TabItem。其中一个DataGrid控件包含DataGrid。当用户点击tcEmployeeDetails的一行时,我们会使用绑定到TabControl的{​​{1}}的视图模型上的SelectedEmployee属性显示SelectedItem <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滚动到struct Arr *stack; 的顶部?

1 个答案:

答案 0 :(得分:2)

向vm添加属性:

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

将此属性绑定到scrollviewer的VerticalOffset

<ScrollViewer VerticalOffset="{Binding ScrollViewerVerticalOffset}">

修改SelectedEmployee的设定者:

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