Xamarin.Forms PullToRefresh не происходит, когда ListView пуст? - PullRequest
1 голос
/ 06 мая 2019

В Xamarin.Forms у меня есть простой ListView, который привязан к модели представления с использованием MVVM.

  <ListView Grid.Row="1"
                     ItemsSource="{Binding ContactsGrouped}"
                     IsGroupingEnabled="true"
                     IsPullToRefreshEnabled="True"
                     RefreshCommand="{Binding RefreshCommand}"
                     IsRefreshing="{Binding IsRefreshing}"
                     GroupDisplayBinding="{Binding Key}"
                     GroupShortNameBinding="{Binding Key}"
                     BackgroundColor="Transparent"
                     SelectionMode="Single"
                     HasUnevenRows="true" 
                     SeparatorColor="#cccccc">
        <ListView.ItemTemplate>
            <cr:MyItemTemplate>
        </ListView.ItemTemplate>
    </ListView>

Это мой код xaml, который прекрасно работает, если в списке есть хотя бы 1 элемент.При нажатии и перетаскивании элемента представление списка обновляется нормально, однако при нажатии и перетаскивании за пределы элемента список не вызывает возникновения PullToRefresh.Это почти так, как будто ListView имеет прозрачный ввод, а его элементы - нет, что позволяет ему работать.

Все, что на красном изображении в моем примере, показывает область, где, если я коснусь и потяну вниз, индикатор активности будет выглядеть нормальнои обновление происходит.Однако при нажатии и перетаскивании в любое место зеленого цвета вид не обновляется, а индикатор активности не отображается.Example

Я не буду показывать свою модель вида, поскольку проблема связана с видом.Я также пытался установить цвет фона на красный, проверяя, вызывает ли прозрачность проблему, к сожалению, это не так.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Я только что воспроизвел вашу проблему на моей стороне.После некоторых исследований я обнаружил, что это известная проблема из Xamarin.forms 3.5.0, и она все еще существует в Latest stable 3.6.0.344457.

. WorkAround понижает вашу версию Xamarin.forms до * 1006.*.

Кроме того, я тестирую его в последней предварительной версии 4.0.0.394984-pre10, и она работает хорошо.Поэтому я считаю, что эта проблема будет решена в следующей версии.

Вы можете выполнить эту проблему , чтобы проверить процесс.

0 голосов
/ 06 мая 2019

Попробуйте добавить VerticalOptions = "StartAndExpand".

<ListView Grid.Row="1"
    ItemsSource="{Binding ContactsGrouped}"
    IsGroupingEnabled="true"
    IsPullToRefreshEnabled="True"
    RefreshCommand="{Binding RefreshCommand}"
    IsRefreshing="{Binding IsRefreshing}"
    GroupDisplayBinding="{Binding Key}"
    GroupShortNameBinding="{Binding Key}"
    BackgroundColor="Transparent"
    SelectionMode="Single"
    HasUnevenRows="true" 
    SeparatorColor="#cccccc"
    VerticalOptions="StartAndExpand">
        <ListView.ItemTemplate>
            <cr:MyItemTemplate>
        </ListView.ItemTemplate>
</ListView>

Это свойство сообщает View, сколько пространства вашего экрана оно должно покрывать.Если вы не добавите его, то представление просто покроет необходимую длину для отображения необходимых данных.

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