动态滚动到列表框中的焦点项目

时间:2016-02-07 06:42:45

标签: c# wpf listbox

我在WPF中有两个列表框,如下所示:
enter image description here


可以说,左边的是lbLeft,右边的是lbRight。左边的“>”按钮将一个选定的项目从lbLeft添加到lbRight。并且,“<”从列表中删除所选项目形式lbRight。
“>>”将所有项目从lbLeft添加到lbRight和“<<”清除lbRight。 当我双击lbLeft中的一个项目时,它会被添加到lbLeft中,并且新添加的项目是聚焦。此外,如果我尝试从lbLeft中添加已存在于lbRight中的项目,则会将焦点放在该选定项目中(以便不重复项目)。但是当在lbRight中添加大量项目时,我必须手动向下滚动到放置焦点的位置。如何将listbox自动滚动到焦点所在的位置?
我做了以下几点:

    private void select_Click(object sender, RoutedEventArgs e) // > button
    {
        addingItemToSelectedList();
    }

    private void remove_Click(object sender, RoutedEventArgs e) // < button
    {
        if (lbRight.SelectedItem != null) {
            lbRight.Items.RemoveAt(lbRight.SelectedIndex);
        }
    }

    private void selectall_Click(object sender, RoutedEventArgs e) // >> button
    {
        lbRight.Items.Clear();
        foreach (string item in column1) {
            lbRight.Items.Add(item);
        }

    }

private void lbLeft_MouseDoubleClick_1(object sender, MouseButtonEventArgs e)
    {
        addingItemToSelectedList();
    }
    private void addingItemToSelectedList() {
        if (lbLeft.SelectedItem != null)
        {
            string item = lbLeft.SelectedItem.ToString();
            addFocus(item);
        }
    }
    private void addFocus(string item) {
        if (!lbRight.Items.Contains(item))
        {
            lbRight.Items.Add(item);
            lbRight.SelectedIndex = lbRight.Items.Count - 1;
            lbRight.Focus();
        }
        else
        {
            int index = lbRight.Items.IndexOf(item);
            lbRight.SelectedIndex = index;
            lbRight.Focus();
        }
    }
    private void removeall_Click_1(object sender, RoutedEventArgs e) //<< button
    {
        lbRight.ItemsSource = null;
        lbRight.Items.Clear();
    }


代码中的column1是填充lbLeft的项目列表 更新:
我试图使用lbRight.ScrollIntoView(lbRight.SelectedIndex);但它没有效果

1 个答案:

答案 0 :(得分:1)

ScrollIntoView()现在工作了。我必须做的是:
lbRight.ScrollIntoView(lbRight.Items[lbRight.SelectedIndex]);
它现在传递实际项目而不是它的索引。