ContentPresenter.Content медленный рендеринг только в первый раз - PullRequest
0 голосов
/ 21 января 2020

Я работаю над приложением флипбука, где пользователь может пролистывать страницы или нажимать кнопки, чтобы перевернуть страницу влево или вправо. После каждого успешного анимационного события вызывается, чтобы установить новый контент для вновь отображаемых страниц. Это, однако, имеет задержку в 1-2 секунды только при первой загрузке указанной страницы c, каждый раз, когда она работает безупречно. Вот код, который вызывает эту странную задержку:

if (_currentSheetIndex == 0)
{
    sheet0Page0Content.Content = null;
    sheet0Page1Content.Content = null;
    sheet0Page2Content.Content = null;
}
else
{
    sheet0Page0Content.Content = GetPage(2 * (CurrentSheetIndex - 1) + 1);
    sheet0Page1Content.Content = GetPage(2 * (CurrentSheetIndex - 1));
    sheet0Page2Content.Content = GetPage(2 * (CurrentSheetIndex - 1) - 1);
}

sheet1Page0Content.Content = GetPage(2 * CurrentSheetIndex);
sheet1Page1Content.Content = GetPage(2 * CurrentSheetIndex + 1);
sheet1Page2Content.Content = GetPage(2 * CurrentSheetIndex + 2);

internal object GetPage(int index)
{
    if ((index >= 0) && (index < Items.Count))
        return Items[index];

    Canvas c = new Canvas();

    return c;
}

sheet0Page0Content и другие имеют тип ContentPresenter. Элементы - это пользовательские элементы управления, которые используются для отображения контента на страницах книги. Я пытался искать различные типы рендеринга и виртуализации, думая, что проблема может быть связана с медленным рендерингом, но безуспешно. Есть идеи по этому поводу?

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