Элемент управления UWP XAML BladeView — прокрутка вновь созданного BladeItem в поле зрения

Я использую элемент управления BladeView из Microsoft Windows Community Toolkit. Когда размер окна приложения составляет ‹ 640 пикселей, свойство BladeMode изменяется на Fullscreen.

Когда в моем коде создается новый блейд, я хочу, чтобы BladeView прокручивалась вправо, чтобы отображался новый блейд. Кажется, я должен использовать StartBringIntoView() для этого, но он ничего не делает.

Вот что я делаю:

if (bladeView.BladeMode == BladeMode.Fullscreen)
{
    // current window width
    Rect windowBounds = Window.Current.Bounds;
    int currentWidth = (int)windowBounds.Width;

    // scroll to view
    BringIntoViewOptions opts = new BringIntoViewOptions();
    Rect target = new Rect { Height = windowBounds.Height, Width = windowBounds.Width, X = currentWidth, Y = 0 };
    opts.TargetRect = target;
    newBlade.StartBringIntoView(opts);
}

Вот как выглядит мое дерево XAML:

введите здесь описание изображения


person ClairelyClaire    schedule 15.08.2018    source источник
comment
Когда добавляются новые блейды, они должны автоматически прокручиваться в поле зрения. Если в вашем приложении этого не происходит, отправьте сообщение о проблеме с воспроизводимым образцом.   -  person Shawn Kendrot    schedule 15.08.2018


Ответы (1)


Мне просто нужно было использовать bladeView.UpdateLayout() перед вызовом StartBringIntoView().

Пример:

if (bladeView.BladeMode == BladeMode.Fullscreen)
{
    // update the layout so StartBringIntoView() works
    bladeView.UpdateLayout();

    // scroll BladeView to newly-created BladeItem
    newBlade.StartBringIntoView();
}
person ClairelyClaire    schedule 15.08.2018
comment
Если вам нужно вызвать UpdateLayout(), значит, нам нужно исправить ошибку. Не могли бы вы создать проблему на github - person Shawn Kendrot; 16.08.2018