我如何让我的ListView集中在一个特定的项目

本文关键字:一个 项目 我的 ListView 集中 | 更新日期: 2023-09-27 18:18:07

我似乎无法弄清楚,因为我似乎无法将我的ListView的项目转换为ListViewItem类型并调用ListViewItem. focus()。因为ListView的项是LogRecord类型的,所以下面的代码不起作用:

((ListViewItem)listView.Items[0]).Focus();
编辑:我希望滚动条移动到项目所在的位置,基本上,或者更好地说,项目在用户看到的项目列表中变得可见。

关于如何让我的ListView专注于一个特定的项目,有什么想法吗?现在它是一个集合。下面是我如何设置我的ListView对象:

listView = new ListView();
Grid.SetRow(listView, 1);
grid.Children.Add(listView);
GridView myGridView = new GridView();
// Skipping some code here to set up the GridView columns and such.
listView.View = myGridView;
Binding myBinding = new Binding();
myBinding.Source = PaneDataContext.LogsWrapper;
listView.SetBinding(ItemsControl.ItemsSourceProperty, myBinding);

我绑定到这个数据类型(LogRecord包含LogRecord之类的东西)。与网格视图上的Message列相对应的消息,等等;并且代码工作):

        public class LogRecordWrapper : IEnumerable<LogRecord>, INotifyCollectionChanged
        {
            public List<LogRecord> RowList { get; set; }
            public event NotifyCollectionChangedEventHandler CollectionChanged;
            public LogRecordWrapper()
            {
                RowList = new List<LogRecord>();
            }
            protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
            {
                if (CollectionChanged != null)
                {
                    CollectionChanged(this, e);
                }
            }
            public void SignalReset()
            {
                OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset, null));
            }
            public void Add(LogRecord item)
            {
                RowList.Add(item);
                OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
            }
            public IEnumerator<LogRecord> GetEnumerator()
            {
                return RowList.GetEnumerator();
            }
            System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
            {
                return GetEnumerator();
            }
        }

我如何让我的ListView集中在一个特定的项目

ListView。ScrollIntoView

列表框。ScrollIntoView方法

这个链接说的是ListBox但是它也适用于ListView

至于不与焦点工作,请张贴你是如何使用ScrollIntoView

你可以用:

listView.Items[0].Focused = true;

…或者:

listVIew.Items[0].Selected = true;

(我不确定你追求的是哪种"专注")

然后与(或在适当的地方使用):

listView.Items[0].EnsureVisible();

这是惊人的!!!!05-29-2002, 04:53 PM #1 Jim GuestListView EnsureVisible不能工作。什么好主意吗?代码……事实上,找到并突出显示选中的项目,它只是不滚动让它可见。用户被强制滚动到条目

04-04-2004, 12:07 AM luchmun你好,正在做表格…一切都很好,但问题是,即使我使用系统。确保列表可见。Selected = true当前条目不可见

11年过去了,它仍然不能工作,没有人,甚至微软似乎也不知道为什么?我的答案是listview .ensurevisible(itemindex)不是listview.items(itemindex).ensurevisible