Вот моя ситуация: у меня есть отношение многие ко многим, которое я пытаюсь смоделировать в приложении WPF, редактируя одну сторону отношения.Ситуация у меня есть набор пользователей, которые принадлежат к нулю для многих групп.При редактировании пользователя я использую ListView
с SelectionMode
, установленным на Many
.Группы, к которым принадлежит пользователь, помечаются как выбранные элементы в представлении списка.
Моя проблема заключается в следующем: не все пользователи имеют право изменять членство в группах пользователей.Но они должны иметь возможность просматривать их.Пока что на самом деле это не проблема, потому что, конечно же, существуют проверки прав, которые запускаются при сохранении изменений.Однако я хотел бы эффективно отключить ListView (по крайней мере, это возможность изменять SelectedItems), сохраняя при этом другие базовые функции (особенно при прокрутке, я также реализовал сортировку при нажатии на заголовки).Таким образом, пользователь не может непреднамеренно вносить изменения, на которые ему не разрешено, а затем сталкиваться с ошибкой позже, когда он собирается сохранить изменения.
В настоящее время я просто полностью отключаю ListView, еслипользователь не имеет достаточных прав.Но, как я уже упоминал, он эффективно отключает все другие функции (прокрутка и т. Д.) И, таким образом, является неоптимальным с точки зрения пользовательского опыта.Количество элементов в списке (в настоящее время несколько сотен) требует, чтобы прокрутка была необходима для просмотра всех элементов.
Я пытался перехватывать различные события мыши (без учета альтернативного доступа к входу на данный момент) и отмечатьсобытия как обрабатываются, когда пользователь нажимает на ListViewItem и помечает событие как обработанное, но ListView по-прежнему изменяет выделение.
Я только что обработал событие SelectionChanged
и просто восстановил предыдущее состояние,но это кажется немного излишним (но, возможно, это самое простое - самое простое - решение).
У кого-нибудь есть мысли о том, как добиться такого поведения?