我在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;
的顶部?
答案 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;
}
}