ScrollView не прокручивается, если размер окна не изменен в .NET MAUI

Я новичок в .NET MAUI.

У меня есть представление прокрутки, и внутри представления прокрутки у меня есть макет вертикального стека с двумя элементами, меткой и кнопкой.

<ScrollView>
    <VerticalStackLayout
        x:Name = "Stack"
        Spacing = "25"
        Padding = "30,0"
        VerticalOptions = "Center">

        <Label
            Text = "Hello, World!"
            SemanticProperties.HeadingLevel = "Level1"
            FontSize = "32"
            HorizontalOptions = "Center" />

        <Button
            x:Name = "ThirdButton"
            Text = "Create Label"
            Clicked = "OnCreateClicked"
            HorizontalOptions = "Start" />

    </VerticalStackLayout>
</ScrollView>

Когда кнопка нажата, я динамически добавляю метки в стек.

private void OnCreateClicked(object sender, EventArgs e)
{
    Label label = new Label { Text = "This is a new label" };
    Stack.Add(label);
}

Я ожидаю, что когда размер содержимого StackLayout больше размера ScrollView, появится полоса прокрутки, и я смогу прокручивать представление.

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

С использованием:

макОС 13.1 Visual Studio 2022 для Mac .NET 7

Целевая платформа: Mac (MacCatalyst)

Я пробовал безуспешно:

  1. установка HorizontalScrollbarVisibility на «Всегда»
  2. установка HorizontalOption на «FillandExpand»

Я также искал документацию для любого другого решения, но не нашел.

Я был бы признателен за любую помощь.

Спасибо.

этот вид прокрутки находится непосредственно внутри страницы содержимого или внутри любого другого элемента управления, который может на него повлиять?

tataelm 25.12.2022 21:13

@tataelm да, ScrollView находится непосредственно внутри ContentPage

ddabrahim 26.12.2022 09:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать следующий код:

В .xaml назовите Scrollview

<ScrollView x:Name = "myscroll">

Затем в файле .cs при добавлении метки:

private void OnCreateClicked(object sender, EventArgs e)
{
    Label label = new Label { Text = "This is a new label" };
    Stack.Add(label);
    // Signals that the measure value of this View must be recomputed 
    (myscroll as IView).InvalidateMeasure();
}

Надеюсь, это сработает для вас.

Спасибо. Это решило проблему для меня.

ddabrahim 26.12.2022 10:17

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