C# 使用MVVM中的ScrollViewer滚动到控件顶部
我在Visual Studio 2015中有一个MVVM Light WPF应用程序。一个C# 使用MVVM中的ScrollViewer滚动到控件顶部,c#,wpf,mvvm,datagrid,scrollviewer,C#,Wpf,Mvvm,Datagrid,Scrollviewer,我在Visual Studio 2015中有一个MVVM Light WPF应用程序。一个ScrollViewer包含main window.xaml中的内容,而后者又包含一个TabControl。一个选项卡项控件包含一个数据网格。当用户单击数据网格的一行时,我们使用绑定到数据网格的SelectedItem的视图模型上的SelectedEmployee属性显示tcEmployeeDetailsTabControl: <ScrollViewer> <Border>
ScrollViewer
包含main window.xaml
中的内容,而后者又包含一个TabControl
。一个选项卡项
控件包含一个数据网格
。当用户单击数据网格的一行时,我们使用绑定到数据网格的SelectedItem
的视图模型上的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; }
}
将此属性绑定到scrollviewer的垂直偏移量
<ScrollViewer VerticalOffset="{Binding ScrollViewerVerticalOffset}">
ScrollViewer.VerticalOffset
是一个只读属性。@JokeHuang有趣的是,这才刚刚曝光。你还在寻找解决方案吗?我将尝试用一个有效的答案编辑答案,我只是现在没有时间。
public double _scrollViewerVerticalOffset
{
get { ... }
set {
if (this.SelectedEmployee != value)
ScrollViewerVerticalOffset = 0;
}
}