Элемент списка остается сфокусированным после выбора - PullRequest
1 голос
/ 15 июля 2011

Я не знаю, выражает ли название то, что я хочу. У меня есть ListBox в WPF, где я генерирую много элементов. Когда я нажимаю на элемент во время генерации, я хочу, чтобы выбранный элемент не перемещался вниз по списку, поэтому я больше не могу его видеть, я хочу оставаться в той позиции, где я щелкаю по нему.

Если это возможно, может кто-нибудь подсказать, как это сделать в C #?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Просто мысль: вы можете попытаться, чтобы ваше представление реагировало на событие всякий раз, когда элемент добавляется в ваш ListBox.В обработчике событий вы могли бы заставить выбранный элемент прокручиваться в представление, по-видимому, сохраняя его в текущем «видимом» положении:

listBox.ScrollIntoView(listBox.SelectedItem);

Я никогда не пробовал этого раньше, поэтому он может или не может производитьжелаемый эффект?

2 голосов
/ 15 июля 2011

Предполагая, что это даже хорошая идея и что вы используете winforms

Шаг 1:

Определить индекс выбранного элемента в источнике.

Шаг 2:

Когда вы добавляете элементы в ListBox, разделите ListBox в индексе, где элемент ранее был, вставьте элемент в этой точке, затем добавьте остальные элементы, убедившись, что вы удалили пункт, если он сейчас находится в другом месте в списке.

Код:

// Предположим, что вы знаете, как получить позицию элемента при нажатии и сохранить // элемент в переменную с именем OriginalItem

public void PutTheItemInTheSameSpot()
{
   var listboxitems = (List<Integer>)YourListBox.DataSource;

   var originalClikedItem = OriginalItem;
   var topPart = new List<Integer>();

   for (i = 0; i < itemPosition; i++)
   {
       topPart.Add(listboxItems[i]);
   }
   topPart.Add(originalClickedItem);

   var bottomPart = listboxitems.Remove(toppart);

   YourListBox.DataSource = toppart.AddRange(bottomPart);


}

Увидел вашу правку о том, что это WPF

Может работать по идее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...