Объединенный ObservableCollection

Вы создали Contractors внутри using (Db db = new Db()). Ничто вне этого не знает, что это существует, поэтому оно говорит, что это не в текущем контексте.

Объявите за пределами этого, например:

List<ContractorVM> Contractors = new List<ContractorVM>()

, а затем внутри назначьте ему значение, например:

Contractors = db.Contractors.Where(x => x.UserId == userId).ToArray().Select(x => new ContractorVM(x)).ToList();

, и оно должно работать

12
задан Kent Boogaart 22 April 2009 в 12:54
поделиться

2 ответа

Есть ли причина, по которой вы не можете использовать CompositeCollection ?

Причина, по которой выдается исключение, заключается в том, что вы не переводите индексы внутренних коллекций к внешнему. Вы просто передаете те же самые аргументы события внешнему событию (в MergedCollection ), поэтому WPF не находит элементы, в которых указывается индекс, чтобы найти их.

Вы используете a CompositeCollection примерно так:

<ListBox>
  <ListBox.Resources>
    <CollectionViewSource x:Key="DogCollection" Source="{Binding Dogs}"/>
    <CollectionViewSource x:Key="CatCollection" Source="{Binding Cats}"/>
  </ListBox.Resources>
  <ListBox.ItemsSource>
    <CompositeCollection>
      <CollectionContainer Collection="{Binding Source={StaticResource DogCollection}}"/>
      <CollectionContainer Collection="{Binding Source={StaticResource CatCollection}}"/>
    </CompositeCollection>
   </ListBox.ItemsSource>
   <!-- ... -->
</ListBox>

Подробнее см. в этот ответ .

24
ответ дан 2 December 2019 в 05:28
поделиться

Необходимо сместить индекс события уведомления.

Скажем, вы удаляете элемент из первой коллекции по индексу 2. Событие изменения коллекции запускается с индексом 2.

Если вы удаляете элемент из Во второй коллекции с индексом 2 событие вызывается с тем же индексом (2), но элемент фактически перечисляется после всех элементов в первой коллекции.

4
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: