В моем приложении MVVM есть сетка данных, которая из-за способа, которым клиент хочет отображать данные, должна использовать столбцы шаблона. Тем не менее, им нужны некоторые типичные функции ввода данных (нажатие клавиши Enter выполняет проверку данных, фиксирует строку, если она действительна, фокусируется на первом текстовом поле следующей строки; нажатие клавиши tab фокусируется на следующем текстовом поле ...). Кроме того, данные часто импортируются из внешнего источника в сетку, обычно это тысячи записей одновременно.
Сейчас у меня есть событие Loaded, подключенное к каждому текстовому полю, которое я использую, чтобы установить фокус после добавления новых строк. Моя проблема заключается в том, что сетка становится бесполезной, когда я импортирую много строк. Когда пользователь выполняет прокрутку, запускаются загруженные события, и сетка становится практически непригодной для использования. Я отключил виртуализацию, чтобы предотвратить это, и обнаружил, что моя сетка занимает гигабайт ОЗУ в определенных конфигурациях, что недопустимо. Я не могу найти способ заставить эту сетку работать так, как им требуется, без использования огромного количества памяти. Кажется, что мне просто нужно иметь возможность сфокусировать текстовое поле внутри новой добавленной строки, но поскольку проверка данных выполняется в viewmodel, у меня нет доступа к новой строке в codebehind, поэтому я не могу просто вызовите "newtextbox.focus ()" или как угодно. Я становлюсь довольно отчаянным здесь, любые предложения будут высоко оценены.