Поле списка WPF автоматическая прокрутка при перетаскивании

Простите мне, если этот ответ был уже отправлен. Существует много ответов, чтобы попытаться считать & поймите всех их.

, Почему не мог, Вы всего изменяете свой покупательный API время от времени? Разве это не было бы абсолютно очевидно для пользователей - людей и в значительной степени уничтожило бы большинство покупателей бота?

Одна реализация должна была бы изменить имена полей, которые пользователь должен заполнить и отправить на странице после удара кнопки "I Want One". Сколько раз года Вы на самом деле продаете BOC? Не то, чтобы часто. Таким образом, это не было бы огромной нагрузкой программирования, чтобы иметь другой покупательный API, запрограммированный, протестированный и готовый к употреблению каждый раз, когда BOC поступает в продажу.

Просто удостоверяются боты, которые используют старый и неправильный API, не снижают Ваш сервер. Возможно, разместите покупку BOC API на другом сервере каждый раз также. Тем путем боты могут снизить сервер, который на самом деле не используется нами покупатели BOC - люди.

26
задан akjoshi 21 December 2012 в 10:17
поделиться

1 ответ

Понятно. Использовал событие DragOver из ListBox , использовал функцию, найденную здесь , чтобы получить средство просмотра прокрутки списка, а затем его просто немного жонглирования Позицией.

private void ItemsList_DragOver(object sender, System.Windows.DragEventArgs e)
{
    ListBox li = sender as ListBox;
    ScrollViewer sv = FindVisualChild<ScrollViewer>(ItemsList);

    double tolerance = 10;
    double verticalPos = e.GetPosition(li).Y;
    double offset = 3;

    if (verticalPos < tolerance) // Top of visible list?
    {
        sv.ScrollToVerticalOffset(sv.VerticalOffset - offset); //Scroll up.
    }
    else if (verticalPos > li.ActualHeight - tolerance) //Bottom of visible list?
    {
        sv.ScrollToVerticalOffset(sv.VerticalOffset + offset); //Scroll down.    
    }
}

public static childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
{
    // Search immediate children first (breadth-first)
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(obj, i);

        if (child != null && child is childItem)
            return (childItem)child;

        else
        {
            childItem childOfChild = FindVisualChild<childItem>(child);

            if (childOfChild != null)
                return childOfChild;
        }
    }

    return null;
}
32
ответ дан 28 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: