我在 Visual Studio 2015 中有一个 MVVM Light WPF 应用程序。ScrollViewer
包含 MainWindow.xaml
中的内容,后者又包含一个 TabControl
。其中一个 TabItem
控件包含一个 DataGrid
。当用户单击 DataGrid
的一行时,我们使用 SelectedEmployee
属性显示 tcEmployeeDetails
TabControl
绑定(bind)到数据网格的 SelectedItem
的 View 模型:
<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>
当用户选择了 DataGrid
的一行时,如何将 ScrollViewer
滚动到 tcEmployeeDetails
的顶部?
最佳答案
向您的虚拟机添加一个属性:
private double _scrollViewerVerticalOffset;
public double ScrollViewerVerticalOffset
{
get { return _scrollViewerVerticalOffset; }
set { _scrollViewerVerticalOffset = value; }
}
将此属性绑定(bind)到滚动查看器的 VerticalOffset
。
<ScrollViewer VerticalOffset="{Binding ScrollViewerVerticalOffset}">
并修改 SelectedEmployee
的 setter:
public double _scrollViewerVerticalOffset
{
get { ... }
set {
if (this.SelectedEmployee != value)
ScrollViewerVerticalOffset = 0;
}
}
关于c# - 在 MVVM 中使用 ScrollViewer 滚动到控件的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500175/