Xamarin Forms - Распознать Пост - PullRequest
       14

Xamarin Forms - Распознать Пост

0 голосов
/ 03 декабря 2018

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

Я не могу найти что-то подобное в Интернете, как это, так что, возможно, вы, ребята, можете мне помочь.

Это поле без поля ввода, и когда пользователь прокручивает вниз ...

... поле ввода становится видимым

1 Ответ

0 голосов
/ 04 декабря 2018

Если вы используете ScollView, есть событие Scrolled, которое возникает при прокрутке представления, а ScrolledEventArgs содержит свойства ScrollX и ScrollY, которые позволяют вам узнать, где находится ScrollViewв настоящее времяЕсли вы сравните ScrollY с высотой ContentSize свойства ScrollView, например:

XAML:

<StackLayout>
    <ScrollView x:Name="scrollView" Scrolled="Handle_Scrolled">
        <StackLayout>
            <Label Text="{Binding Article}" HorizontalOptions="StartAndExpand" VerticalOptions="StartAndExpand" />
        </StackLayout>
    </ScrollView>
    <Entry IsVisible="{Binding AtEnd}" Placeholder="End reached!" />
</StackLayout>

Код позади (MainPage является ContentPage подкласс):

string _article;
public string Article
{
    get
    {
        return _article;
    }
    set
    {
        if (_article != value)
        {
            _article = value;
            OnPropertyChanged("Article");
        }
    }
}

bool atEnd;
public bool AtEnd
{
    get
    {
        return atEnd;
    }
    set
    {
        if (atEnd != value)
        {
            atEnd = value;
            OnPropertyChanged("AtEnd");
        }
    }
}

public MainPage()
{
    Article = "<put in enough text here to force scrolling>";
    AtEnd = false;
    InitializeComponent();
    BindingContext = this;
}

void Handle_Scrolled(object sender, Xamarin.Forms.ScrolledEventArgs e)
{
    if (e.ScrollY + scrollView.Height >= scrollView.ContentSize.Height)
        AtEnd = true;
    else
        AtEnd = false;
}

Тем не менее, почему бы просто не поместить запись под статьей, используя тот же вид прокрутки?Я просто помещаю элемент Entry после Label выше в тот же StackLayout, и запись всегда будет там в конце всегда, но пользователь не увидит его, пока не прокрутит вниз.Кажется, это было бы более простым решением.Конечно, вы не можете использовать Label, но то же самое применимо, просто поместите Entry внизу макета, который ScrollView прокручивает.

...