Из того, что я могу сказать по новым битам, вы должны подписаться на события Link
и Unlink
LLS.Link
передаст аргумент, содержащий элемент, добавленный в видимую часть LLS.Unlink
делает то же самое для тех элементов, которые удалены из LLS.Таким образом, вы должны сделать что-то вроде этого:
List<string> trackedItems = new List<string>();
private void myListOfStrings_Link(object sender, LinkUnlinkEventArgs e)
{
var x = e.ContentPresenter;
if (x == null || x.Content == null)
return;
trackedItems.Add(x.Content.ToString());
}
private void myListOfString_Unlink(object sender, LinkUnlinkEventArgs e)
{
var x = e.ContentPresenter;
if (x == null || x.Content == null)
return;
trackedItems.Remove(x.Content.ToString());
}
Обратите внимание, что Link
и Unlink
будут запускаться для КАЖДОГО визуализированного элемента в базовом списке, поэтому, если вы используете функции группировки LLSтогда вам придется расширить свой тест на то, отслеживать или нет элемент, основываясь на том, какой тип действительно возвращается.Поэтому, если у вас есть какой-то групповой объект, для которого вы хотите отслеживать базовые объекты, вы можете сделать что-то вроде этого:
private void myGroupedListOfObjects_Link(object sender, LinkUnlinkEventArgs e)
{
var x = e.ContentPresenter;
if (x == null || x.Content == null)
return;
var myObject = x.Content as MyObject;
if (myObject != null)
{
foreach (var item in myObject.Items)
{
trackedItems.Add(item);
}
}
}
Надеюсь, это поможет!Дайте нам знать, если это сработает.