gpt4 book ai didi

c# - 在 MVVM 中使用 ScrollViewer 滚动到控件的顶部

转载 作者:行者123 更新时间:2023-11-30 23:27:41 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com