【问题标题】:Wpf Datagrid scroll at top and Unselect all in grouping by defaultWpf Datagrid在顶部滚动并默认取消选择所有分组
【发布时间】:2015-03-22 20:13:17
【问题描述】:

我正在开发一个 wpf 图片库。我想要做的是当用户一直滚动到顶部时。从数据库中获取更多图片。我找不到数据网格的滚动事件?。其次,我使用了数据网格的分组功能,但它总是在顶部滚动,默认情况下选择第一项。有没有办法默认取消选择全部并将滚动条放在底部?。提前致谢

【问题讨论】:

  • 描述你的第一部分问题
  • @safi 我想知道数据网格的滚动事件,当用户滚动条位于网格顶部时可以通知我
  • 它默认在顶部,或者当用户下来并返回顶部时你想要它?
  • @safi 我正在使用数据网格的分组功能。所以发生的情况是滚动条默认位于顶部,并且选择了第一个项目。这不是我想要的。我希望滚动条位于 datagrid 的底部。其次,当用户一直滚动到顶部时,它应该通知我,以便我可以从数据库中获取更多图像

标签: c# wpf datagrid wpfdatagrid


【解决方案1】:

您应该首先获取 scrollViewer,然后您需要 ScrollChanged 事件,这描述了如何

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    ScrollViewer scrollViewer = GetVisualChild<ScrollViewer>(dgFamily);
    if (scrollViewer != null)
        scrollViewer.ScrollChanged += scrollViewer_ScrollChanged;
}
void scrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
    if (e.VerticalOffset == 0)
        MessageBox.Show("You reach to top");
}
private static T GetVisualChild<T>(DependencyObject parent) where T : Visual
{
    T child = default(T);

    int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < numVisuals; i++)
    {
        Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
        child = v as T;
        if (child == null)
        {
            child = GetVisualChild<T>(v);
        }
        if (child != null)
        {
            break;
        }
    }
    return child;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 2011-11-03
    • 2014-03-27
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多