2016-11-23 12 views
0

私はXamarin.Formsアプリを持っています.iOS上ではすべてうまくいっていますが、ListViewに問題があります。Xamarin.Formsの最後の項目iOSのListViewにアクセスできない

コレクションが更新されると、ListViewが更新され、新しいアイテムがリストビューの上部に追加されたことがわかりますが、何らかの形でビューの最後のアイテムが表示されなくなります(!!!)私はListViewの最後まで行ってListViewをプルしようとするが、最後の項目はそこにあるが、デフォルトでは表示されていないことがわかり、私はそれを開くことができない。

私はBeginRefreshとEndRefreshを行うにはもう一度コレクションを再バインドしようとしましたが何も助けませんでした。誰でもこの問題がありましたか?または、リストビューを強制的に再レン​​ダリングする方法はありますか?

ここに問題の例があります。最後の項目が「テストメッセージ」であることがわかります。 (フレームが完成していないことがわかります - 下部の線は表示されません)。私は私を取得する場合

enter image description here

しかし: enter image description here

ながら、私はListViewコントロールを引く場合、私はListViewコントロールで最後のメッセージを見始めることができます。ユーザーは、これは彼が持っている最後のメッセージであると考えています指を画面から離すと、リストビューは最初の画像を表示し、最後の2つのメッセージは消えます。

BTW - この問題はObservableCollectionに新しいメッセージを追加した場合にのみ発生します。また、2つの新しいメッセージを追加すると、最後の2つのCellViewが表示されなくなります。この問題はiOS(Androidの場合は期待どおり)でのみ発生します。

ありがとう、 Seif。

+0

最近、この問題が発生しましたが、Androidのみ正常に動作しました。回避策として、デバイスの画面の高さやその他のビューに基づいてListViewの可視の高さを計算し、HeightRequestを明示的に設定しました。しかし、それはかなり醜いハックです。 – samgak

+0

Xamarin.Formsのバージョンを2.3.2.127に更新して修正しました。 – iseif

答えて

0

Xamarin.Formsのバージョンを2.3.2.127に更新して修正しました。

0

私はmnessagesを表示するリストビューを持っている、とするとき(最後に)新しいを追加し、私はリストを下にスクロールして、強制...多分それはあなたのために便利です...

var lastMessage = this.listViewMensajes.ItemsSource.Cast<object>().LastOrDefault(); 
       if (null != lastMessage) 
       { 
        if(Animated) 
        { 
         await Task.Delay(500); 
         this.listViewMensajes.ScrollTo(lastMessage, ScrollToPosition.Start, true); 
        } 
        else 
        { 
         this.listViewMensajes.ScrollTo(lastMessage, ScrollToPosition.Start, false); 
        } 

       } 

アニメーションフラグ

ListView lv = new ListView{ 
    Footer = new BoxView{ 
    WidthRequest = 30 
    } 
} 

そして、あなたは唯一のiOSプロジェクトでこれを追加することができます:あなたはまた、空白のボックスビューでのようなものをフッターを追加することができますちょうどショーのスライド効果のためか...

+0

メッセージのおかげで、このソリューションは部分的に機能しました。私はScrollToを実行したときに最後のメッセージを見ましたが、再びスクロールすると最後のメッセージは再び消えました。コメントのために – iseif

0

です。

+0

ありがとう - これは私のために働いていません。 – iseif

関連する問題