Я не могу понять это, потому что, похоже, я не могу отличить элементы ListView от типа ListViewItem и вызвать ListViewItem.Focus(). Ниже не будет работать, потому что элементы в ListView являются типа LogRecord:Как я могу заставить свой ListView сосредоточиться на определенном элементе?
((ListViewItem)listView.Items[0]).Focus();
EDIT: Я хочу, чтобы полоса прокрутки, чтобы переместить туда, где деталь, в основном, или лучше сказать, что элемент становится видимым в списке элементов, которые пользователь видит.
Любые идеи о том, как я могу заставить свой 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.ScrollIntoView http://msdn.microsoft.com/en-us/library/system.windows.controls .listbox.scrollintoview.aspx – Paparazzi
@Blam - Большое спасибо. Спас мою жизнь. Пожалуйста, опубликуйте это решение в качестве ответа, чтобы я мог его принять. – Alexandru
@Blam - Что, если ScrollView в настоящее время не является частью сфокусированного элемента? Кажется, что эта операция фактически не выполняется, если только прокрутка не является частью сосредоточенного элемента. Есть ли способ обойти это? – Alexandru