c # мерцание Listview при обновлении - PullRequest
49 голосов
/ 14 января 2009

У меня есть представление списка, которое периодически обновляется (каждые 60 секунд). Мне было досадно, что я буду мерцать каждый раз, когда это от даты. Используемый метод должен был очистить все элементы и затем воссоздать их. Я решил вместо того, чтобы очистить элементы, которые я бы просто записал прямо в ячейку с новым текстом. Это лучший подход или у кого-то есть лучшее решение?

Ответы [ 13 ]

0 голосов
/ 28 ноября 2016

В Winrt Windows phone 8.1 вы можете установить следующий код для решения этой проблемы.

<ListView.ItemContainerTransitions>
    <TransitionCollection/>      
</ListView.ItemContainerTransitions>
0 голосов
/ 27 октября 2016

Я знаю, что это чрезвычайно старый вопрос и ответ. Тем не менее, это лучший результат при поиске «мерцания списка C ++ / cli» - несмотря на то, что речь даже не идет о C ++. Итак, вот версия C ++ этого:

Я поместил это в заголовочный файл для моей основной формы, вы можете поместить его в другое место ...

static void DoubleBuffer(Control^ control, bool enable) {
    System::Reflection::PropertyInfo^ info = control->GetType()->
        GetProperty("DoubleBuffered", System::Reflection::BindingFlags::Instance 
            | System::Reflection::BindingFlags::NonPublic);
    info->SetValue(control, enable, nullptr);
}

Если вы оказались здесь и ищете похожий ответ для управляемого C ++, это работает для меня. :)

0 голосов
/ 14 января 2009

Попробуйте установить свойство с двойной буферизацией в true.

Также вы можете использовать:

this.SuspendLayout();

//update control

this.ResumeLayout(False);

this.PerformLayout();
...