(WPF) Можно ли сохранить ItemsControl в список? - PullRequest
1 голос
/ 18 июля 2009

Я объясню свой вопрос немного подробнее.

У меня есть ObservableCollection, привязанная к ItemsControl с табличкой данных. Ничего нового: P.

Дело в том, что я использую библиотеку Drag & Drop для изменения порядка элементов в ItemsControl. Библиотека работает нормально, вы можете перетащить некоторые элементы в ItemsControl.

Проблема в том, что изменения в ItemsControl не влияют на ObservableCollection.

Вопрос: могу ли я сохранить источник ItemsControl в новую коллекцию ObservableCollection? Или ... у тебя есть идея получше?

Спасибо, и я надеюсь, что вы понимаете меня и мой английский: P

Ответы [ 2 ]

0 голосов
/ 18 июля 2009

Наряду с ответом Чарли, я могу добавить немного больше к тому, что вы можете сделать, чтобы сделать это Надеемся, что библиотека DragDrop выдаст вам событие сброса, которое может дать вам перетаскиваемый элемент (Source). Source.DataContext будет элементом в вашей коллекции ObservableCollection, и вы можете легко найти OLD_INDEX с помощью Collection.IndexOf (item). Теперь, так как ваша библиотека перетаскивания переместила источник.

Вы можете получить NEW_INDEX с помощью ItemsContainerGenerator.IndexFromContainer (источник), если источником является ContentControl для ItemsControl. Или же вам может понадобиться пройтись по VisualTree, чтобы узнать ContentControl, который составлял ItemsControl. Это зависит от реализации библиотеки перетаскивания.

Теперь collection.Move (OLD_INDEX, NEW_INDEX) вот и все.

0 голосов
/ 18 июля 2009

ObservableCollection имеет метод Move . Метод принимает старый индекс и новый индекс. Когда ваш ItemsControl изменяется, вы можете вызвать Move в связанной коллекции со старым индексом элемента и новым (текущим) индексом. Затем коллекция ObservableCollection будет обновлена.

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