在 MVVM 中使用 ScrollViewer 滚动到控件的顶部
Scroll to top of a control with ScrollViewer in MVVM
我在 Visual Studio 2015 年获得了一个 MVVM Light WPF 应用程序。 ScrollViewer
包含 MainWindow.xaml
中的内容,后者又包含 TabControl
中的内容。 TabItem
控件之一包含 DataGrid
。当用户单击 DataGrid
的一行时,我们在绑定到 [=20] 的视图模型上使用 SelectedEmployee
属性 显示 tcEmployeeDetails
TabControl
=] 的数据网格:
<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; }
}
将此 属性 绑定到滚动查看器的 VerticalOffset
。
<ScrollViewer VerticalOffset="{Binding ScrollViewerVerticalOffset}">
并修改 setter 为 SelectedEmployee
:
public double _scrollViewerVerticalOffset
{
get { ... }
set {
if (this.SelectedEmployee != value)
ScrollViewerVerticalOffset = 0;
}
}
我在 Visual Studio 2015 年获得了一个 MVVM Light WPF 应用程序。 ScrollViewer
包含 MainWindow.xaml
中的内容,后者又包含 TabControl
中的内容。 TabItem
控件之一包含 DataGrid
。当用户单击 DataGrid
的一行时,我们在绑定到 [=20] 的视图模型上使用 SelectedEmployee
属性 显示 tcEmployeeDetails
TabControl
=] 的数据网格:
<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; }
}
将此 属性 绑定到滚动查看器的 VerticalOffset
。
<ScrollViewer VerticalOffset="{Binding ScrollViewerVerticalOffset}">
并修改 setter 为 SelectedEmployee
:
public double _scrollViewerVerticalOffset
{
get { ... }
set {
if (this.SelectedEmployee != value)
ScrollViewerVerticalOffset = 0;
}
}