Вопрос

У меня есть Silverlight DataGrid, который содержит один столбец шаблона, в котором отображается пользовательский элемент управления.Пользовательский элемент управления имеет индикатор выполнения для представления обработки, и когда обработка завершена, анимация скрывает индикатор выполнения и показывает готовую метку.

Есть два случая, в которых datagrid, похоже, не перерисовывает себя:

Первый, когда пользователь выполняет большую прокрутку, datagrid начнет перерисовывать анимацию, когда появится usercontrol , и, наконец, достигнет точки, когда он ничего не перерисовывает.

Второй, в usercontrol есть событие click, которое отображает всплывающее окно.Когда всплывающее окно снова закрывается, usercontrol не может перерисовать себя должным образом.

Есть какие-нибудь идеи относительно того, почему происходит такое поведение и как его обойти?

Это было полезно?

Решение

Предыдущий ответ правильный.Я обнаружил, что иногда вам приходится правильно обрабатывать события Loading_Row и Unloading_Row, если вы хотите, чтобы какой-либо из ваших элементов управления работал должным образом.В моих случаях, когда свойства элементов управления фактически привязаны к объекту, это работает лучше всего.Если вы попытаетесь полагаться на анимацию, видимость и тому подобное, вы увидите странное поведение, но если вы привяжете progressbar к объекту, который поддерживает прогресс для каждого элемента за кулисами, то каждый раз, когда отображается эта строка, она будет повторно привязываться и перерисовываться.

Другие советы

Вы должны понимать, что DataGrid не содержит по одному экземпляру вашего элемента управления для каждой строки в сетке.Источник данных может содержать миллионы строк, в то время как сетке не требуется больше экземпляров вашего элемента управления, чем поместится на экране.Это означает, что, например, при прокрутке не отображаются экземпляры вашего элемента управления, ранее невидимые;он просто присваивает видимым в данный момент элементам управления любые значения, необходимые для корректного отображения текущей позиции прокрутки.

Я не знаю, есть ли обходной путь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top