Рейтинг:
6
BillWoodruff
Одна из многих мощных функций 'ObservableCollection<T> - это информация о состоянии, которую дает вам 'CollectionChanged EventHandler. Отслеживая последние измененные данные, вы часто можете избежать ненужного кода и/или включить функцию " отменить:
bool suppressOCChangeAction = false;
bool keepOCLastChangeData = true;
NotifyCollectionChangedAction lastAction;
int prevNdx;
int newNdx;
IList oldItems;
IList newItems;
private void OCOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (suppressOCChangeAction) return;
if (keepOCLastChangeData)
{
lastAction = e.Action;
prevNdx = e.OldStartingIndex;
newNdx = e.NewStartingIndex;
oldItems = e.OldItems;
newItems = e.NewItems;
}
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
break;
case NotifyCollectionChangedAction.Remove:
break;
case NotifyCollectionChangedAction.Replace:
break;
case NotifyCollectionChangedAction.Move:
break;
case NotifyCollectionChangedAction.Reset:
break;
}
}
Sinisa Janjetovic
Я немного смущен этим ответом. Связано ли это с этим вопросом?
BillWoodruff
Я добавил Это, потому что думал, что это может быть полезно и поможет избежать некоторых ненужных вычислений.
Рейтинг:
15
Maciej Los
Попробуйте что-нибудь вроде этого:
var itemindex = BidList.IndexOf(BidList.Where(x=>x.Id==25).FirstOrDefault());
Sinisa Janjetovic
Спасибо, но я получаю -1, и определенно это не так. Я проверил его с Id==20, и я должен получить 19.
Или я поставил этот код не на то место? Я вставил его в часть кода, который написал в своем вопросе.
Должен ли я сохранить символ x, как вы написали, или я должен заменить его чем-то другим?
Maciej Los
Я понятия не имею, почему ты получаешь -1.
Да, вы можете заменить [x] любым символом или именем, например: Where(item=>item.Id==20)
Sinisa Janjetovic
Спасибо, это прекрасно работает. Я нашел одну внутреннюю ошибку, все правильно.
Maciej Los
Отличный. Можете ли вы принять мой ответ как решение?
Sinisa Janjetovic
Да, конечно, вы мне очень помогли
Maciej Los
Спасибо.
Овации
Мацей