<p>Xamarin.Forms.CollectionView Spec</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬреВрди 2018  ┬╖  178рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: xamarin/Xamarin.Forms

рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп

рдореМрдЬреВрджрд╛ рдлреЙрд░реНрдо рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдХреНрд╕рд░ рд╡рд╣ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдкрд╢реНрдЪ рд╕рдВрдЧрддрддрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, ListView рдмрдЧреНрд╕ рдХреЛ рдвреВрдВрдврдирд╛ рдФрд░ рдареАрдХ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдкреНрд░рдпрд╛рд╕ рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдкреАрдЖрдИ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдХрд░ рдФрд░ рджреЗрд╢реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╕реВрдЪреА-рдирд┐рд░реНрдорд╛рдг рдирд┐рдпрдВрддреНрд░рдг рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЕрдкрдирд╛рдХрд░ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рд╣реИред рдлрд▓рддрдГ:

  • рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдХреНрд╖реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдиреЗ рдкрд░, рд╕реЗрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ ListView рдХреЗ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИред рд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рд╕рдВрднрд╡ рд╣реИ рд╡рд╣ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • CollectionView API рд╕рддрд╣ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред ListView рд╕реЗ рдХрдИ рдЧреБрдг рдФрд░ рдИрд╡реЗрдВрдЯ CollectionView рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ DataTemplates рдХреЗ рднреАрддрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ; рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдереЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рдереЗред рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдиреАрдЪреЗ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред

  • CollectionView рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд▓реЗрдЖрдЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рдмреЗрдХ рди рдХрд░рдХреЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдЙрди рд▓реЗрдЖрдЙрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪреА рджреГрд╢реНрдп) рдФрд░ рдЬреЛ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

_рдиреЛрдЯ: рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХреБрдЫ рднреА рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реВрдЪреА рджреГрд╢реНрдп рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ рдЬреЛ рдХрдИ рдлрд╝реЙрд░реНрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред_

_рдиреЛрдЯ: рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдХреБрдЫ рднреА рдЕрдВрддрд┐рдо рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ; рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрди рд╣реИрдВред_

рдиреАрдЪреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╡рд░реНрддрдорд╛рди рдкреВрд░реНрдгрддрд╛ рд╕реНрдерд┐рддрд┐

рд╕рд╣рд╛рдпрдХ рдПрдкреАрдЖрдИ

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CollectionView рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ API рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ:

  • FontIconSource - рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЧреНрд▓рд┐рдлрд╝ рдХреЛ рдЖрдЗрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛; рдЗрд░рд╛рджрд╛ рдЧреНрд▓рд┐рдлрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИ рдЬрд╣рд╛рдБ рднреА рдкреНрд░рдкрддреНрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рдкрддреНрд░реЛрдВ рдХреЗ рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдПрдХ рд╡рд╛рдВрдЫрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди CollectionView рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕реНрд╡рд╛рдЗрдк рдЬреЗрд╕реНрдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рднреА рдирд┐рддрд╛рдВрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИ ( FontIconSource рдХрд▓реНрдкрдирд╛ рджреЗрдЦреЗрдВ)ред

  • SwipeView - рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрддреНрд╡ рдкрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ( SwipeView рдХрд▓реНрдкрдирд╛ рджреЗрдЦреЗрдВ)ред

рд▓реЗрдЖрдЙрдЯ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛

рдпрд╣ рдпреБрдХреНрддрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрдЗрдЯрдо рдХреЛ рд▓рдВрдмрд╡рдд рд╕реВрдЪреА, рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪреА рдпрд╛ рдЧреНрд░рд┐рдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореВрд▓ рд╡рд░реНрдЧ рд╕рднреА рдЗрди рд▓реЗрдЖрдЙрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдИрдУрдПрд╕ рдкрд░, рдпрд╣ рдпреБрдХреНрддрд┐ UITableView рдХреЗ рдмрдЬрд╛рдп UICollectionView рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдорд╛рдирддреА рд╣реИред)

CollectionView рдХреЛ рджрд┐рдП рдЧрдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░рд░ рдореЗрдВ рдореВрд▓ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рдЧреНрд░рд┐рдб рд▓реЗрдЖрдЙрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ iOS рдкрд░ рд░реЗрдВрдбрд░рд░ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) UICollectionViewFlowLayout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред Android рдкрд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ GridLayoutManager рд╣реЛрдЧрд╛; рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдкрд░, рдЧреНрд░рд┐рдб рд╡реНрдпреВред

рдкреНрд░рдкрддреНрд░ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдореЗрдВ рдЖрдЗрдЯрдо рдХреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ (рдЖрдЗрдЯрдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗ рд╕реНрд╡рдпрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ); рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЗрд╢реА рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдЧрд╛; рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Android рдкрд░ StaggeredGridLayoutManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рддреЛ рдпрд╣ рдЪрдпрди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рд▓реЗрдЖрдЙрдЯ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдПрдкреАрдЖрдИ рд░рд┐рдореВрд╡рд▓

  • IsPullToRefreshEnabled - рдЗрд╕реЗ рдЕрдм RefreshView рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • IsRefreshing - рдЗрд╕реЗ рдЕрдм RefreshView рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд░реАрдлреНрд░реЗрд╢ рдХрдорд╛рдВрдб - рдЗрд╕реЗ рдЕрдм рд░реАрдлреНрд░реЗрд╢ рд╡реНрдпреВ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • HasUnevenRows - рдпрд╣ рдЕрдм ItemSizingStrategy рд╣реИред
  • RowHeight - рдпрд╣ рдЕрдм рд░рдЦреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рд╡рд╕реНрддреБ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
  • рд╡рд┐рднрд╛рдЬрдХ рджреГрд╢реНрдпрддрд╛ - рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рд╡рд┐рднрд╛рдЬрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ; рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрд╣реЗрдВ (рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛ) рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рд╕реЗрдкрд░реЗрдЯрд░ рдХрд▓рд░ - рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рд╕реЗрдкрд░реЗрдЯрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ; рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрд╣реЗрдВ (рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛ) рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • GroupShortName - рдпрд╣ рдЧреБрдг рдЬрдВрдк рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдЬрд╝реВрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рдерд╛; CollectionView рдЪрд░рдг 1 рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдкреАрдЖрдИ

рдкреНрд░рд╕рдВрдЧрд╡рд╕реНрддреБ

ContextItem рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

public class ContextItem
{
    public static readonly BindableProperty TextProperty;
    public string Text { get; set; }

    public static readonly BindableProperty CommandProperty;
    public ICommand Command { get; set; }

    public static readonly BindableProperty CommandParameterProperty;
    public object CommandParameter { get; set; }

    public static readonly BindableProperty IsEnabledProperty;
    public bool IsEnabled { get; set; }

    public static readonly BindableProperty IconProperty;
    public ImageSource Icon { get; set; }

    public event EventHandler Invoked;
}

рдЧреБрдг

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдкрд╛рда | рдЖрдЗрдЯрдо рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рдХрдорд╛рди | рдЬрдм рдЗрд╕ рдЖрдЗрдЯрдо рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рдХрдорд╛рдВрдб рдкреИрд░рд╛рдореАрдЯрд░ | |
| рд╕рдХреНрд╖рдо рд╣реИ | рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджрд░реНрдн рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред |
| рдЪрд┐рд╣реНрди | рдЖрдЗрдЯрдо рдХреА рдЧреНрд░рд╛рдлрд┐рдХ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |

рдЖрдпреЛрдЬрди

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдЖрдордВрддреНрд░рд┐рдд | рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЖрдЗрдЯрдо рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рдЖрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред |

рд╕рдВрджрд░реНрдн рдХреА рд╡рд┐рдХрд▓реНрдк - рд╕реВрдЪреА

рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА VisualElement рдХреЗ рд▓рд┐рдП рдПрдХ ContextMenu рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореВрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдХреНрд░рд┐рдп/рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

public static class ContextMenu
{
    public static readonly BindableProperty MenuItemsProperty =
            BindableProperty.CreateAttached("MenuItems", typeof(ContextMenuItems), typeof(VisualElement));
}


public class ContextMenuItems : IList<ContextItem>
{
}

рд░рд┐рдлреНрд░реЗрд╢ рд╡реНрдпреВ

#5882 . рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛

рдЪрдпрди рдореЛрдб

рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЪрдпрди рдореЛрдб рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

public enum SelectionMode 
{
    None,
    Single,
    Multiple
}

рдЪрдпрдирдмрджрд▓рд╛ рд╣реБрдЖрдЗрд╡реЗрдВрдЯрдЖрд░реНрдЧ

public class SelectionChangedEventArgs : EventArgs
{
    public IReadOnlyList<object> PreviousSelection { get; }
    public IReadOnlyList<object> CurrentSelection { get; }
}

рдЧреБрдг

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдкрд┐рдЫрд▓рд╛рдЪрдпрди | рдЪрдпрди рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪреБрдиреЗ рдЧрдП рдЖрдЗрдЯрдо рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред |
| рд╡рд░реНрддрдорд╛рди рдЪрдпрди | рдЪрдпрди рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдЪреБрдиреЗ рдЧрдП рдЖрдЗрдЯрдо рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред |

IItemsрд▓реЗрдЖрдЙрдЯ

рдорд╛рд░реНрдХрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдЖрдЗрдЯрдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CollectionView рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

public interface IItemsLayout {}

рдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯрдУрд░рд┐рдПрдВрдЯреЗрд╢рди

ItemsLayout рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рджрд┐рд╢рд╛ рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИред

public enum ItemsLayoutOrientation
{
    Vertical,
    Horizontal
}

рдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯ

рдкреНрд░рдкрддреНрд░-рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХреНрд▓рд╛рд╕ред

public abstract class ItemsLayout : IItemsLayout
{
    public ItemsLayoutOrientation Orientation { get; }

    protected ItemsLayout(ItemsLayoutOrientation orientation);

    public static readonly BindableProperty SnapPointsAlignmentProperty;
    public SnapPointsAlignment SnapPointsAlignment { get; set; }

    public static readonly BindableProperty SnapPointsTypeProperty;
    public SnapPointsType SnapPointsType { get; set; }  

    public static readonly BindableProperty ItemSpacingProperty;
    public Thickness ItemSpacing {get; set;}
}

рдЧреБрдг

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| ItemsLayoutOrientation | рдЙрд╕ рджрд┐рд╢рд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ CollectionView рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИред |
| рд╕реНрдиреИрдкрдкреЙрдЗрдВрдЯреНрд╕ рдЯрд╛рдЗрдк | рджреГрд╢реНрдп рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕реНрдиреИрдк рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред |
| SnapPointsAlignment | рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╕реНрдиреИрдк рдмрд┐рдВрджреБ рджреГрд╢реНрдп рдореЗрдВ рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред |
| рдЖрдЗрдЯрдо рд╕реНрдкреЗрд╕рд┐рдВрдЧ | рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред |

рд╕реВрдЪреА рдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯ

public class ListItemsLayout : ItemsLayout
{
    public ListItemsLayout(ItemsLayoutOrientation orientation) : base (orientation);

    public static readonly IItemsLayout VerticalList = new ListItemsLayout(ItemsLayoutOrientation.Vertical); 
    public static readonly IItemsLayout HorizontalList = new ListItemsLayout(ItemsLayoutOrientation.Horizontal); 
}

рд╕реНрдерд┐рд░ рд╕рджрд╕реНрдп

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рд▓рдВрдмрд╡рдд рд╕реВрдЪреА | рдПрдХ рдПрдХрд▓ рд╕реНрддрдВрдн рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирдП рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рд╕реВрдЪреА рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдмрдврд╝рддреА рд╣реИред |
| рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪреА | рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирдП рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рд╕реВрдЪреА рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдмрдврд╝рддреА рд╣реИред |

рдЧреНрд░рд┐рдбрдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯ

рдПрдХ рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдпрд╛ рдмрд╣реБ-рд╕реНрддрдВрдн рд▓реЗрдЖрдЙрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

public class GridItemsLayout : ItemsLayout
{
    public static readonly BindableProperty SpanProperty;
    public int Span { get; set; }

    public GridItemsLayout([Parameter("Span")] int span, [Parameter("Orientation")] ItemsLayoutOrientation orientation) : base (orientation);
}

рд╕реНрдиреИрдкрдкреЙрдЗрдВрдЯ рд╕рдВрд░реЗрдЦрдг

ListItemsLayout рдореЗрдВ рд╕реНрдиреИрдк рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрд░реЗрдЦрдг рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

public enum SnapPointsAlignment
{
    Start,
    Center,
    End
}

рдПрдирдо рдорд╛рди

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдкреНрд░рд╛рд░рдВрдн | рд╕реНрдиреИрдк рдкреЙрдЗрдВрдЯ рдЖрдЗрдЯрдо рдХреЗ рдЕрдЧреНрд░рдгреА рдХрд┐рдирд╛рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред |
| рдХреЗрдВрджреНрд░ | рд╕реНрдиреИрдк рдкреЙрдЗрдВрдЯ рдЖрдЗрдЯрдо рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред |
| рдЕрдВрдд | рд╕реНрдиреИрдк рдкреЙрдЗрдВрдЯ рдЖрдЗрдЯрдо рдХреЗ рдЕрдиреБрдЧрд╛рдореА рдХрд┐рдирд╛рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред |

рд╕реНрдиреИрдкрдкреЙрдЗрдВрдЯ рдЯрд╛рдЗрдк

ListItemsLayout рдореЗрдВ рд╕реНрдиреИрдк рдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

public enum SnapPointsType
{
    None,
    Optional,
    Mandatory,
    OptionalSingle,
    MandatorySingle,
}

рдПрдирдо рдорд╛рди

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдХреЛрдИ рдирд╣реАрдВ | рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЖрдЗрдЯрдо рдкрд░ рд╕реНрдиреИрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред |
| рд╡реИрдХрд▓реНрдкрд┐рдХ | рдпрджрд┐ рдХреЛрдИ рд╕реНрдиреИрдк рдмрд┐рдВрджреБ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд░реАрдм рд╣реИ, рддреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдХрдЯрддрдо рд╕реНрдиреИрдк рдмрд┐рдВрджреБ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЬрдбрд╝рддрд╛ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд░реБрдХ рдЬрд╛рдПрдЧреАред |
| рдЕрдирд┐рд╡рд╛рд░реНрдп | рд╕рд╛рдордЧреНрд░реА рд╣рдореЗрд╢рд╛ рдирд┐рдХрдЯрддрдо рд╕реНрдиреИрдк рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рддреА рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЬрдбрд╝рддрд╛ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд░реБрдХ рдЬрд╛рдПрдЧреАред |
| рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд┐рдВрдЧрд▓ | рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЖрдЗрдЯрдо рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред |
| рдЕрдирд┐рд╡рд╛рд░реНрдп рд╕рд┐рдВрдЧрд▓ | рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЖрдЗрдЯрдо рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред |

рдЧреБрдг

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдЕрд╡рдзрд┐ | рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рджрд┐рд╢рд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред |

рдЖрдЗрдЯрдо рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреА рд░рдгрдиреАрддрд┐

CollectionView рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрднрд╛рд╡рд┐рдд рдЖрдЗрдЯрдо рдорд╛рдкрди рд░рдгрдиреАрддрд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

public enum ItemSizingStrategy
{
    MeasureAllItems,    
    MeasureFirstItem
}

рдПрдирдо рдорд╛рди

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдорд╛рдк рд╕рднреА рдЖрдЗрдЯрдо | рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред |
| рдорд╛рдкрдлрд░реНрд╕реНрдЯрдЖрдЗрдЯрдо | рдХреЗрд╡рд▓ рдкрд╣рд▓реА рд╡рд╕реНрддреБ рдХреЛ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдмрд╛рдж рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд╣рд▓реЗ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред |

ItemsUpdatingScrollMode

рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╕рдордп рдЖрдЗрдЯрдо рдХреЗ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

public enum ItemsUpdatingScrollMode
{
    KeepItemsInView,
    KeepScrollOffset,
    KeepLastItemInView
}

рдПрдирдо рдорд╛рди

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| KeepItemsInView | рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдкрд╣рд▓рд╛ рджреГрд╢реНрдпрдорд╛рди рдЖрдЗрдЯрдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдСрдлрд╝рд╕реЗрдЯ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред |
| KeepScrollOffset | рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рд╕реВрдЪреА рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдХреНрд░реЙрд▓ рдСрдлрд╝рд╕реЗрдЯ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред |
| KeepLastItemInView | рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдЕрдВрддрд┐рдо рджреГрд╢реНрдпрдорд╛рди рдЖрдЗрдЯрдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдСрдлрд╝рд╕реЗрдЯ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред |

рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп

рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

public class CollectionView : View
{
    public static readonly BindableProperty ItemsLayoutProperty;
    public IItemsLayout ItemsLayout { get; set; }

    public static readonly BindableProperty ItemsSourceProperty;
    public IEnumerable ItemsSource { get; set; }

    public static readonly BindableProperty ItemTemplateProperty;
    public DataTemplate ItemTemplate { get; set; }

    public static readonly BindableProperty ItemsUpdatingScrollMode;
    publio ItemsUpdatingScrollMode ItemsUpdatingScrollMode { get; set; }

    public static readonly BindableProperty HeaderProperty;
    public object Header { get; set; }

    public static readonly BindableProperty HeaderTemplateProperty;
    public DataTemplate HeaderTemplate { get; set; }

    public static readonly BindableProperty IsHeaderStickyProperty;
    public bool IsHeaderSticky { get; set; }

    public static readonly BindableProperty FooterProperty;
    public object Footer { get; set; }

    public static readonly BindableProperty FooterTemplateProperty;
    public DataTemplate FooterTemplate { get; set; }

    public static readonly BindableProperty IsFooterStickyProperty;
    public bool IsFooterSticky { get; set; }

    public static readonly BindableProperty EmptyViewProperty;
    public object EmptyView { get; set; }

    public static readonly BindableProperty EmptyViewTemplateProperty;
    public DataTemplate EmptyViewTemplate { get; set; }

    public static readonly BindableProperty GroupDisplayBindingProperty;
    public BindingBase GroupDisplayBinding { get; set; }

    public static readonly BindableProperty GroupHeaderTemplateProperty;
    public DataTemplate GroupHeaderTemplate { get; set; }

    public static readonly BindableProperty GroupFooterTemplateProperty;
    public DataTemplate GroupFooterTemplate { get; set; }

    public static readonly BindableProperty ItemSizingStrategy;
    public bool ItemSizingStrategy { get; set; }

    public static readonly BindableProperty IsGroupingEnabledProperty;
    public bool IsGroupingEnabled { get; set; }

    public static readonly BindableProperty SelectionModeProperty;
    public SelectionMode SelectionMode { get; set; }

    public static readonly BindableProperty SelectedItemProperty;
    public object SelectedItem { get; set; }

    public static readonly BindableProperty SelectedItemsProperty;
    public IList<object> SelectedItems { get; set; }

    public static readonly BindableProperty SelectionChangedCommandProperty;
    public ICommand SelectionChangedCommand;

    public static readonly BindableProperty SelectionChangedCommandParameterProperty;
    public object SelectionChangedCommandParameter;

    public static readonly BindableProperty RemainingItemsThresholdProperty;
    public int RemainingItemsThreshold { get; set; }

    public void ScrollTo(object item, object group = null, 
        ScrollToPosition position = ScrollToPosition.MakeVisible, bool animate = true);

    public void ScrollTo(int index, int groupIndex = -1, 
        ScrollToPosition position = ScrollToPosition.MakeVisible, bool animate = true);

    public event EventHandler<SelectionChangedEventArgs> SelectionChanged;

    public event EventHandler<EventArgs> RemainingItemsThresholdReached; 
}

рдЧреБрдг

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯ | рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| ItemSizingStrategy | рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдХреЗрдд рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕реЗ MeasureAllItems (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдкрд╛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдЗрдЯрдо рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рд╕рдорд╛рди рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рдпрд╣ рдорд╛рди MeasureFirstItem рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдХреЗрд╡рд▓ рдкрд╣рд▓реА рд╡рд╕реНрддреБ рдХреЛ рдорд╛рдкрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдмрд╛рдж рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рдЖрдХрд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред |
| рдЖрдЗрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ | рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ DataTemplate рдХреЛ рдкреНрд░рд╛рдкреНрдд рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ
| ItemsUpdatingScrollMode | рдЖрдЗрдЯрдо рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| IsGropingEnabled | рдПрдХ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред |
| рд╣реИрдбрд░ | рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдпрд╛ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рд╣реИрдбрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ | рд╣реЗрдбрд░ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рдЗрд╕рд╣реЗрдбрд░рд╕реНрдЯрд┐рдХреА | рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╣реЗрдбрд░ рдпрдерд╛рд╡рдд рд░рд╣рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ True |
| рдкрд╛рдж | рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдпрд╛ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдиреАрдЪреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред |
| рдлреВрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ | рдкрд╛рджрд▓реЗрдЦ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рдЗрдЬрд╝рдлреБрдЯрд░рд╕реНрдЯрд┐рдХреА | рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдкрд╛рдж рд▓реЗрдЦ рдпрдерд╛рд╡рдд рд░рд╣рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ True |
| рдЦрд╛рд▓реА рджреГрд╢реНрдп | рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдпрд╛ рджреГрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдЗрдЯрдореНрд╕рд╕реЛрд░реНрд╕ рдХреЗ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ред |
| рдЦрд╛рд▓реА рджреГрд╢реНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ | EmptyView рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| GroupHeaderрдЯреЗрдореНрдкрд▓реЗрдЯ | рд╕рдореВрд╣ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| GroupFooterTemplate | рд╕рдореВрд╣ рдкрд╛рджрд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред* |
| рдЖрдЗрдЯрдо рд╕реНрд░реЛрдд | рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреАред |
| рдЪрдпрди рдореЛрдб | рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдЪрдпрди рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо | рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЛ SelectionMode рдХреЗ Single SelectionMode рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЛ рдЖрдЗрдЯрдо рд╕реНрд░реЛрдд рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ SelectedItem рдХреЛ null рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред |
| рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо | SelectionMode рдХреЗ Multiple SelectionMode рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдЗрдЯрдо рд╕реНрд░реЛрдд рд╕реЗ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ SelectedItems рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ SelectionChanged рдХреЛ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред |
| SelectionChangedCommand | рдЪрдпрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ICommand рдХреЛ рдкреНрд░рд╛рдкреНрдд рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| SelectionChangedCommandParameter | SelectionChangedCommand рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рдЧреНрд░реБрдкрдбрд┐рд╕реНрдкреНрд▓реЗрдмрд╛рдЗрдВрдбрд┐рдВрдЧ | рд╕рдореВрд╣ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред |
| рд╢реЗрд╖ рдЖрдЗрдЯрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб | рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рдЕрднреА рддрдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реАрдорд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ RemainingItemsThresholdReached рдШрдЯрдирд╛ рдХреЛ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди -1 рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдИрд╡реЗрдВрдЯ рдХрднреА рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдП 0, рдИрд╡реЗрдВрдЯ рддрдм рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╡рд░реНрддрдорд╛рди рдореЗрдВ ItemsSource рдореЗрдВ рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред 0 рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдиреЛрдВ рдкрд░, рдИрд╡реЗрдВрдЯ рддрдм рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм ItemsSource рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд╣ рдЖрдЗрдЯрдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдЬрд┐рди рддрдХ рдЕрднреА рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред |

рддрд░реАрдХреЛрдВ

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рд╕реНрдХреНрд░реЙрд▓рдЯреЛ (рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдЗрдЯрдо, рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреНрд░реБрдк = рдирд▓, рд╕реНрдХреНрд░реЙрд▓рдЯреЙрдкрд┐рд╢рди рдкреЛрдЬреАрд╢рди = рд╕реНрдХреНрд░реЙрд▓рдЯреЙрдкреЛрдЬрд┐рд╢рдиред рдореЗрдХ рд╡рд┐рдЬрд┐рдмрд▓, рдмреВрд▓ рдПрдирд┐рдореЗрдЯ = рдЯреНрд░реВ) | рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЗрдЯрдо рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред |
| рд╕реНрдХреНрд░реЙрд▓рдЯреЛ (рдЗрдВрдЯ рдЗрдВрдбреЗрдХреНрд╕, рдЗрдВрдЯ рдЧреНрд░реБрдкрдЗрдВрдбреЗрдХреНрд╕ = -1, рд╕реНрдХреНрд░реЙрд▓рдЯреЙрдкрд┐рд╢рди рдкреЛрдЬреАрд╢рди = рд╕реНрдХреНрд░реЙрд▓рдЯреЙрдкреЛрдЬрд┐рд╢рдиред рдореЗрдХ рд╡рд┐рдЬрд┐рдмрд▓, рдмреВрд▓ рдПрдирд┐рдореЗрдЯ = рдЯреНрд░реВ) | рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкрд░ рдЖрдЗрдЯрдо рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред |

рдЖрдпреЛрдЬрди

| рдПрдкреАрдЖрдИ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- |
| рдЪрдпрди рдмрджрд▓ рдЧрдпрд╛ | SelectedItem рдпрд╛ SelectedItems рдЧреБрдг рдмрджрд▓рдиреЗ рдкрд░ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рдореЗрдВ рд╡реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ SelectionMode рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реЛрддреЗ рд╣реИрдВред |
| рд╢реЗрд╖ рдорджреЛрдВ рдХреА рджрд╣рд▓реАрдЬ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ | рдЬрдм рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЛ рдЗрддрдиреА рджреВрд░ рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ RemainingItemsThreshold рдЖрдЗрдЯрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЕрдзрд┐рдХ рдЖрдЗрдЯрдо рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдИрд╡реЗрдВрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |

рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ

рдЪреИрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди

рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдРрдк рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЪреИрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИред рд╕рдВрджреЗрд╢ рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рд╕реЗ рдКрдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ UI рдХреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд API рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ CollectionView.ItemsUpdatingScrollMode рд╕рдВрдкрддреНрддрд┐ рдХреЛ KeepLastItemInView рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИ, рддреЛ рдирдП рдЖрдЗрдЯрдо рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ рдФрд░ рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рдХрд╣реАрдВ рдФрд░ рд╣реИ, рддреЛ рдирдП рдЖрдЗрдЯрдо рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдЧреАред

рдирд┐рдХрдЯрддрдо рдХреЗ рд▓рд┐рдП рд╕реНрдиреИрдк рдХрд░реЗрдВ

рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдРрдк рд░рд┐рдпрд▓ рдПрд╕реНрдЯреЗрдЯ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреА рдПрдХ рд╕реВрдЪреА рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рддрдм рддрдХ рд╕реБрдЪрд╛рд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реБрдХ рди рдЬрд╛рдПред рдЬрдм рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдРрдк рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ (рдПрдирд┐рдореЗрдЯреЗрдб) рдХреЛ рд╕реНрдиреИрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕рдмрд╕реЗ рд╢реАрд░реНрд╖ рд╕реВрдЪреА рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛред рд╕реНрдиреИрдк рд╣рдореЗрд╢рд╛ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдЧрддрд┐ рдкреИрджрд╛ рдХрд░реЗред

рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде ListItemLayout рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  • Orienation : Vertical
  • SnapPointsAlignment : Start
  • SnapPointsType : Mandatory

рдЯреЗрдмрд▓ рд╡реНрдпреВ

рдбреЗрд╡рд▓рдкрд░ рдПрдХ рдЯреЗрдмрд▓ рд╡реНрдпреВ рдЬреИрд╕реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдбреЗрд╡рд▓рдкрд░ рдПрдХ рд▓рдВрдмрд╡рдд рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде ListItemsLayout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред ItemsTemplate рдХреЛ DataTemplate рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдПрдХ рдЯреЗрдмрд▓ рд╕реЗрд▓ рдХреЗ рд░рдВрдЧрд░реВрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ "рд╕реЗрдЯрд┐рдВрдЧреНрд╕" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреБрдЫ рд╕реЗрд▓ рдХрд┐рд╕реА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ/рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рджреНрд╡рд┐рддреАрдпрдХ рд╕реЗрдЯрд┐рдВрдЧ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ), рддреЛ рдбреЗрд╡рд▓рдкрд░ рдЪрд╛рд╣ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪрдпрдирдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ рдЬреЛ рдЪрд╛рд▓реВ/рдмрдВрдж рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдЯреЙрдЧрд▓ рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде) рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ (рдПрдХ TapGesture рдХреЗ рд╕рд╛рде рдЬреЛ рджреНрд╡рд┐рддреАрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ)ред

рдЕрдирдВрдд рд╕реВрдЪреА

рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдРрдк рд╣реИ рдЬреЛ "рд╕рдорд╛рдЪрд╛рд░" рдлрд╝реАрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИред "рд╕рдорд╛рдЪрд╛рд░" рдлрд╝реАрдб рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рдЕрдирдВрдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕реЗрдЯ рдХреЗ рдЕрдВрдд рдХреЗ рдХрд░реАрдм рд╣реЛрддрд╛ рд╣реИ рддреЛ рдРрдк рдХреЛ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрдк рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╛ рддреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рджрд┐рдЦрд╛рдИ рджреЗ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд▓рдВрдмрддрд╛/рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПред рдбреЗрд╡рд▓рдкрд░ рдЗрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ RemainingItemsThreshold рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ RemainingItemsThresholdReached рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдИрд╡реЗрдВрдЯ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рд░ рд╕рд░реНрд╡рд░ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд ItemsSource рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

collectionview blocker roadmap enhancement тЮХ

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд▓рдВрдмрди рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдИрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рд╕рднреА 178 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд▓рдВрдмрди рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдИрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред

FontIconSource

FontIconSource рдХреЗ рд▓рд┐рдП рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрджрд┐ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк f370 рдорд╛рди рдХреЗ рд╕рд╛рде FontIconSource рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдЬреАрдм рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреВрд╕рд░реА рддрд░рдл, рдЕрдЧрд░ рдореИрдВ рдЪреБрди рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЪреБрди рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдХрд┐рд╕ рдЖрдЗрдХрди рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлреЙрд░реНрдо рдХреЛ fa-app-store-ios рдХреЛ f370 рдХреЗ рдпреВрдирд┐рдХреЛрдб рд╕рдордХрдХреНрд╖ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рдЕрдм рдореИрдВ рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЬрд┐рд╕ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ Font Awesome рд╕реЗ рд╣реИ рдФрд░ рдпрд╣ iOS рдРрдк рд╕реНрдЯреЛрд░ рдЖрдЗрдХрди рд╣реИред рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдлреЙрд░реНрдо рдореЗрдВ рд╣рд░ рдЙрдкрд▓рдмреНрдз рдлрд╝реЙрдиреНрдЯ (рдпрд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА) рдХреЗ рд▓рд┐рдП рд╕рдордЭ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ рд╕реЗ рдЖ рд╕рдХрддреА рд╣реИ рдпрд╛ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЯреВрд▓рдХрд┐рдЯ рдЖрджрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рдореЗрдВ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╕рд╛рд░реНрдердХ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ред

рдЕрдВрдд рдореЗрдВ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдПрдПрдордПрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдмреЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ:

<Image Source="{FontIcon fa-app-store-ios,Color={StaticResource primaryColor}}" />

рдореЗрдиреВ

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ @davidortinau рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрджрд░реНрд╢ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЙрдкрдпреБрдХреНрдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдкрд░ рдорд┐рд╢реНрд░рдг рдФрд░ рдорд┐рд▓рд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкрд░ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╕рдВрджрд░реНрдн рдПрдХ рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдореЗрдиреВ рдмрд╛рдИрдВ рдУрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рдФрд░ рджреВрд╕рд░рд╛ рджрд╛рдИрдВ рдУрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдорд░реНрдерд┐рдд рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рд╡рд╣ рд╕реЗрд▓ рдореЗрдиреВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ iOS CollectionView рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрдпреЛрдЬрди

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХрд┐ рдореИрдВ рдкрдХреНрд╖рдкрд╛рддреА рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдореБрджрд╛рдп рдХрд╛ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдПрдорд╡реАрд╡реАрдПрдо рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣рд╛ рд╣реИред SelectionChanged рдФрд░ RemainingItemsThresholdReached рдИрд╡реЗрдВрдЯ рд╣реЛрдирд╛ рджреЛрдиреЛрдВ рд╣реА API рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЗрди OOB рдХреЛ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ ViewModel рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдвреВрдВрдв рд╕рдХреЗрдВ ... a рдореИрдВ рдЖрджреЗрд╢ред

рдЪреВрдВрдХрд┐ RemainingItemsThresholdReached рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рджрд╛ рдкреБрд░рд╛рдирд╛ EventArgs рднреЗрдЬрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд╛рдВрдб рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд┐рд▓реЗрдХреНрд╢рди рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдП рдЖрдЗрдЯрдо рдмрдирд╛рдо рдкреБрд░рд╛рдиреЗ рдЖрдЗрдЯрдо рдХреЛ рдЬрд╛рдирдирд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдирдП рдЖрдЗрдЯрдо рдУрдУрдмреА рдХреЛ рд╕рд┐рд▓реЗрдХреНрд╢рди рдЪреЗрдВрдЬ рдХрдорд╛рдВрдб рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╣рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдУрд╡рд░рд╣реЗрдб рдХреА рдПрдХ рдиреНрдпреВрдирддрдо рд░рд╛рд╢рд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреБрдЫ EventToCommandBehavior рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╡рд░реНрддрдорд╛рди рд╕реВрдЪреАрджреГрд╢реНрдп рдХреЛ рдорд╛рд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд╣реА рдирдореВрдирд╛ рдХреИрд▓реЗрдВрдбрд░ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдЬрд╣рд╛рдВ:
-рджрд┐рдиреЛрдВ (рдХреЛрд╢рд┐рдХрд╛рдУрдВ) рдореЗрдВ рдХрдИ рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:
рдкрджреЛрдиреНрдирддрд┐ рджрд┐рд╡рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрдиреНрдорджрд┐рди, рд╡рд┐рдХрд▓рд╛рдВрдЧ / рдмрд┐рдХреНрд░реА рд░рд╣рд┐рдд рджрд┐рди / рдмреИрдВрдХ рдЕрд╡рдХрд╛рд╢ ...
рдЗрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрд╕реНрдЯрдо рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдореНрдмреЗрдбреЗрдб рдЖрдЗрдХрди, рд╕реЗрд▓ рдореЗрдВ рдЫрд╛рдпрд╛ рд╣реИ рдпрджрд┐ рдЪрдпрдирд┐рдд рд╣реИ, рдЕрдиреНрдп рд╢реИрд▓реА рдЬрдм r . рдореЗрдВ рд╣реИ
рдХреНрд░реЛрдз, рдЕрдиреНрдп рдЬрдм рд╕реАрдорд╛ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рдореЗрдВ
-рдЪрдпрди рддрд┐рдерд┐ рдХреНрд░реЛрдз рд╕рдВрднрд╡ рд╣реИ
-рдорд╛рд╣ рд╣реИрдбрд░ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдбрд░ рд╢реИрд▓реА
-рдорд╣реАрдиреЗ рд╣реЗрдбрд░ рдореЗрдВ рдмрдЯрди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЪрд╛рд▓реВ рдорд╛рд╣ рдкрд░ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рджреГрд╢реНрдп/рдХреНрд░рд┐рдпрд╛/рдкреНрд░рджрд░реНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд░рд╣реЗ рд╣реИрдВ

GroupFooterTemplate рдХреЛ рднреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдкреНрд░рдкрддреНрд░реЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :-) рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдорд╣рдВрдЧреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛, рд╕реАрдорд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рдВрднрд╡рдд: рдкрд┐рдЫрд▓реЗ 5 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд▓рдЧрднрдЧ рд╣рд░ рдлреЙрд░реНрдо рдРрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рднреА - рджреЗрд╢реА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ рдФрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред

рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рддреЛ рдореИрдВ рдкреНрд░рдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдпрд╣ рд╡рд╣ рд╣реЛрдЧрд╛ред
(рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВрдиреЗ 2017 рдореЗрдВ @davidortinau рдХреЗ

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрджреНрднреБрдд рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╣реИ! рдПрдкреАрдЖрдИ рд╕рд╛рдл рдФрд░ рд╕реАрдзрд╛ рд╣реИ (HasUnevenRows рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!)

рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдИрд╡реЗрдВрдЯ рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ @dhaligas рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓рдВрдмрди рдПрдирд┐рдореЗрд╢рди рдХреЗ рд▓рд┐рдП рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдПрдХреНрд╢рди рдмрдЯрди рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред

FontIconSource рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдХреЛрдб рдореИрдк рдХрд┐рдП рдЧрдП (рдЖрдИрдУрдПрд╕ рдпрд╛ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдХреЗ рд╕рдорд╛рди) рдХреЗ рд╕рд╛рде, рдЖрдЗрдХрди рдХреА рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрдкреАрдЖрдИ рдмрд╣реБрдд рд╕рд╛рдл рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХрдИ рд╡рд┐рдЪрд╛рд░/рдХрдВрдЯреЗрдирд░ рд╣реЛрдиреЗ рд╕реЗ рдХреЛрдб рдХреНрд▓реАрдирд░ рдФрд░ рд╕рд░рд▓ рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рдореЗрд░реА рдЕрдм рддрдХ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:

@dansiegel рдПрдХ рдЖрджреЗрд╢ рдЬрдм рд╢реЗрд╖ рдЖрдЗрдЯрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪрдпрдирд┐рдд рдЗрдЯрдореНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рддреЗ рд╣реИрдВ (рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛, рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХреНрдпреЛрдВ) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рддрдм рддрдХ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЪрдпрдирд┐рдд рдЗрдЯрдореНрд╕ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЪрдпрди (рдпрд╛ рдХреБрдЫ рднреА рдЬреЛ INotifyCollectionChanged рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ)ред рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рдХреЛрдб рд╣реЛрдЧрд╛ред

рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ: рдореИрдВ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЗрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рд╣рдо рдЗрд╕реЗ рдЗрд╕ рд╕рдордп Android рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди iOS рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ UITableViewSource рдХреЛ рд▓рдкреЗрдЯрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЛ рд╣рд╛рдИрдЬреИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рд╣реЛрдЧреАред рдХреГрдкрдпрд╛ рдПрдбреЗрдкреНрдЯрд░ рдФрд░ рдЯреЗрдмрд▓ рд╡реНрдпреВ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдФрд░ рдХреГрдкрдпрд╛ рджреЗрд╢реА рд░реЗрдВрдбрд░рд░реНрд╕ рдореЗрдВ "рдХреНрд░рд┐рдПрдЯрдПрдбрд╛рдкреНрдЯрд░" рдФрд░ "рдХреНрд░рд┐рдПрдЯ рд╡реНрдпреВрд╕реЛрд░реНрд╕" рд╡рд┐рдзрд┐рдпреЛрдВ (рдФрд░ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди) рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдЪрд╛рд╣реЗрдВ рддреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рд╕рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд▓рд┐рд╕реНрдЯ рдПрдбреЗрдкреНрдЯрд░ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдФрд░ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо UITableViewSourcesред рдпрд╣ рд╡рд╣ рдХреЛрдб рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдЖрджрд┐ рдХреА рд░реИрдкрд┐рдВрдЧ рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ рдПрдбреЗрдкреНрдЯрд░/рджреГрд╢реНрдп рд╕реНрд░реЛрддреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ, рдХреГрдкрдпрд╛ рдРрд╕реЗ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝реЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХреЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рд╛рди рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ!
iOS рдкрд╣рд▓реЗ рд╕реЗ рд╣реА UICollectionView рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ CollectionView рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рднреНрд░рдо рдФрд░ рдЧрд▓рдд Google рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпреЗ рдПрдХ рджрд┐рдХреНрдХрдд рд╣реИ?

рдмрд╕ рдЗрд╕реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ CollectionView рдХрд▓реНрдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╕рдВрдж рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╛рддрдЪреАрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

public class MultipleFontIconsSource : ImageSource
{
    public List<FontIconSource> Icons { get; set; }
}

рд╕реНрдЯреИрдХрд┐рдВрдЧ рдЖрдЗрдХрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛: https://fontawesome.com/how-to-use/on-the-web/styling/stacking-icons

рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:

  1. рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╡рд░реНрдЧ рдореЗрдВ рдЖрдЗрдЯрдо рдЪрдпрди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рд░рдЦреВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ ListCollectionView рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖рдорддрд╛рдПрдВ рд╣реИрдВ:
public class CollectionView : View
{
   // Common capabilities related to a view capable of displaying a list of items
    public static readonly BindableProperty ItemsLayoutProperty;
    public IItemsLayout ItemsLayout { get; set; }

    public static readonly BindableProperty ItemsSourceProperty;
    public IEnumerable ItemsSource { get; set; }
}

public class ListCollectionView : CollectionView
{
     // Item selection capabilities and other capabilities 

    public static readonly BindableProperty SelectionModeProperty;
    public SelectionMode SelectionMode { get; set; }

    public static readonly BindableProperty SelectedItemProperty;
    public object SelectedItem { get; set; }

    public static readonly BindableProperty SelectedItemsProperty;
    public IList<object> SelectedItems { get; set; }

    public static readonly BindableProperty SelectedItemsProperty;
    public IList<object> SelectedItems { get; set; }
}

рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдПрдПрдордПрд▓ рдореЗрдВ рдЖрдЗрдЯрдореНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд╕рдорд╛рди рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдЯрдореНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдПрдХ рдкреИрдирд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдЖрдЗрдЯрдореНрд╕ рдХреЛ рд░рдЦрддрд╛ рд╣реИред рдкреНрд░рдкрддреНрд░реЛрдВ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ CollectionView рдФрд░ IItemsLayout рд╣реЛрдВрдЧреЗред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдХреЛрдИ IItemLayout рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЗрдЖрдЙрдЯ рдПрдХ рд╕реНрдЯреИрдХ рд▓реЗрдЖрдЙрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ ItemsSource рдХреЛ Windows XAML рд╕реЗ StackPanel рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдмрд╛рдЗрдВрдбреЗрдмрд▓ StackLayout!

рдЖрдЗрдЯрдо рдЪрдпрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рдХреНрд╖рдорддрд╛рдПрдВ рднреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓реВрдВрдЧрд╛, рдореИрдВ рдЗрдиреНрд╣реЗрдВ ListCollectionView рдореЗрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛

  1. рдореИрдВ IItemsLayout рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ ICollectionViewLayout рд░рдЦреВрдВрдЧрд╛ред рдврд╛рдВрдЪреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Layout рдФрд░ ItemsView ред рдпрд╣ рдПрдХ рд▓рдВрдмрд╛ рдирд╛рдо рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди ICollectionViewLayout рдПрдХ рдордЬрдмреВрдд рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдЖрдЗрдЯрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

  2. рдореИрдВ ItemsLayout рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ OrientedCollectionViewLayout рдХрд░ рджреВрдВрдЧрд╛ред рдпрд╣ рдПрдХ рдордЬрдмреВрдд рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ, рд╕рднреА рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрдиреНрдореБрдЦ рддрд░реАрдХреЗ рд╕реЗ рд▓реЗрдЖрдЙрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд╛рдо рдореЗрдВ "рдУрд░рд┐рдПрдВрдЯреЗрдб" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдЕрдореВрд░реНрдд рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ "рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВрд▓реЗрдЖрдЙрдЯ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕рднреА рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд▓реЗрдЖрдЙрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирдИ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред

  3. рд╡реНрдпреВрд╕реЗрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдпрд╣ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред

  1. рдХреНрдпрд╛ рдЖрдк рд░реАрдлреНрд░реЗрд╢ рд╡реНрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
    рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реАрдлреНрд░реЗрд╢ рд╡реНрдпреВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЖрдИрдУрдПрд╕ рдкрд░ UIRefreshControl рдкрд░ рдореИрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдЕрдкрдиреА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рд╣реИрдВред

рдореИрдВ @andreinitescu рд╕реЗ рд╕рд╣рдордд

рдЬрдмрдХрд┐ рдореБрдЭреЗ рд╕реНрдХреНрд░реЙрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рдореИрдВ рдЧреИрд░-рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ "рд╕рдВрдЧреНрд░рд╣" рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЖрдХрд░реНрд╖рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рдХреА рд╕рднреА рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдпрд╛ рдореЗрд░реЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдПрдХ рдЧреИрд░ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣рдореЗрд╢рд╛ рдЫреЛрдЯреА рд╡рд╕реНрддреБ рд╕реВрдЪреА рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред ListView рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЪрдпрди рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдореИрдВ рд╕реВрдЪреА рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд▓реЗрдЖрдЙрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрди рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдпреБрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рд╣реИред

@bmacombe рдореИрдВ

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЧреИрд░-рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рд░рдЦрдиреЗ рдХрд╛ рдорд╛рдореВрд▓реА рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрднреА рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдореЗрдВ ListView рдбрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдЬрд┐рд╕реЗ рдЖрдк рд╡рд╣рд╛рдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрднреА рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕реВрдЪреА рджреГрд╢реНрдп рдХреА рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╣реИрдВ, рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдХрдИ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╡рд╣реА рдмрд╛рдЗрдВрдбреЗрдмрд▓рд╕реНрдЯреИрдХ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рд╣рд░ рдХреЛрдИ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдореЗрдВ рдмреЗрдХ рдХрд┐рдпрд╛ рд╣реБрдЖ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@adammeaney рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЕрдм рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВред

@andreinitescu рдореИрдВ рдЕрд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдмрд╕ рдЗрд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВред рдореИрдВ рдХрд┐рд╕реА рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдиреЛ рд╕реНрдХреНрд░реЙрд▓" рд╡рд┐рдХрд▓реНрдк рди рд╣реЛред

рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдореИрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВ рдпрд╛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕реЗ рд╕рдорд╛рди рд╡рд░реНрдЧ рд░рдЦрддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рд░рд╣реВрдВрдЧрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлреЙрд░реНрдо рдЯреАрдо рдЗрд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдПред

@bmacombe рдХреБрдЫ рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдкрддреНрдерд░ рд╕реЗ рджреЛ рдкрдХреНрд╖реА рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ IItemLayout рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░реЗрдВрдбрд░рд░ рддрдВрддреНрд░ рджреНрд╡рд╛рд░рд╛ iOS рдкрд░ рдПрдХ рдореВрд▓ UIStackView рдпрд╛ UWP рдкрд░ StackPanel рдпрд╛ Android рдкрд░ LinearLayout рдкрд░ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛, рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рд╕реНрдЯреИрдХрд▓рд╛рдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рдереА рдХрд┐ рдПрдХ рдирдИ рд╕реВрдЪреА рджреГрд╢реНрдп рдХрд╛ рд▓рдХреНрд╖реНрдп рдореМрдЬреВрджрд╛ рд╕реВрдЪреА рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ "рджреЛрд╣рд░рд╛рдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдЗрдВрдбрд░" рдзрд╛рдЧреЗ

рд╣рдо рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдпреБрдХреНрддрд┐ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ ListView2 рдХрд╣рд╛рдБ рд▓реИрдВрдб рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣рд╛рдВ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдиреМрдХрд░реА рд╕рд╣реА рд╣реЛрдЧреАред

2680 рдЗрд╕ рдпреБрдХреНрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред

@andreinitescu

рдХреНрдпрд╛ рдЖрдк рд░реАрдлреНрд░реЗрд╢ рд╡реНрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реАрдлреНрд░реЗрд╢ рд╡реНрдпреВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЖрдИрдУрдПрд╕ рдкрд░ UIRefreshControl рдкрд░ рдореИрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

UWP рдкрд░, рд╣рдо рд╕рдВрднрд╡рддрдГ RefreshContainer рдХрд╛ рдЙрдкрдпреЛрдЧ SwipeRefreshLayout ред

@krdmllr

iOS рдкрд╣рд▓реЗ рд╕реЗ рд╣реА UICollectionView рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ CollectionView рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рднреНрд░рдо рдФрд░ рдЧрд▓рдд Google рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпреЗ рдПрдХ рджрд┐рдХреНрдХрдд рд╣реИ?

рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирдИ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд╝реЙрд░реНрдо рдореЗрдВ GestureRecognizer, ListView, Grid рдФрд░ рдХрдИ рдЕрдиреНрдп рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╣рдордиреЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрдШрд░реНрд╖ рдХрд┐рдпрд╛; "рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛" рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЗрддрдиреЗ рд╣реА рд╕рдВрднрд╛рд╡рд┐рдд рдирд╛рдо рд╣реИрдВред

"рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ" рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдлреЙрд░реНрдо рдореЗрдВ рдореМрдЬреВрдж рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдирд┐рдпрдВрддреНрд░рдг рдирд╛рдореЛрдВ (рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ "рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ" рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ UICollectionView ("рдпреВрдЖрдИ" рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдХрд╛рд░рдг) рдХреА рддрд░рд╣ _exactly_ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЦреЛрдЬ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП 100% рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдЗрд░рд╛рджреЗ рдХреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЕрдЧрд░ рдХреЛрдИ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рддреБрд░рдВрдд рдкреНрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрддреА рд╣реИред

(рдореИрдВ рдЗрд╕реЗ "ListView2ColonRevengeOfTheListView" рдирд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди @davidortinau рдиреЗ рдореБрдЭреЗ рдЧреЛрд▓реА рдорд╛рд░ рджреА :))

@dansiegel

рдЗрд╕ рдкрд░ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╕рдВрджрд░реНрдн рдПрдХ рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдореЗрдиреВ рдмрд╛рдИрдВ рдУрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рдФрд░ рджреВрд╕рд░рд╛ рджрд╛рдИрдВ рдУрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

SwipeView рдпреБрдХреНрддрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ - рдареАрдХ рдпрд╣реА рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рд╣реИред

@GalaxiaGuy

рд╕реНрдЯреИрдХрд┐рдВрдЧ рдЖрдЗрдХрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдЯ-рдЗрди UWP рдЧреНрд▓рд┐рдлрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ; рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╢реЛрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕реНрдЯреИрдХрд┐рдВрдЧ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ (рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ "рд╣рд╛рдВ" рд╣реИ)ред

рдЕрджреНрдпрддрди: рдЗрд╕ рдпреБрдХреНрддрд┐ рдХреЗ FontIconSource рднрд╛рдЧ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдпреБрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдЪрдпрди рд╕реЗ рдмрд╣реБ-рдЪрдпрди рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдПрд▓реНрдмрдо рд╕реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдлрд╝реЛрдЯреЛ рдХрд╛ рдЪрдпрдиред рд╡рдирдбреНрд░рд╛рдЗрд╡ рдпрд╛ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдЬреИрд╕реЗ рдРрдкреНрд╕ рдореЗрдВ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред

20180527_181626000_ios

@ hartez

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЕрдЧрд░ рдХреЛрдИ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рддреБрд░рдВрдд рдкреНрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрддреА рд╣реИред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдПрдХ рдирдпрд╛ рдирд╛рдо рд╕реБрдЭрд╛рдпрд╛ рд╣реИ

SelectedItem рдХрд╛ рдорд╛рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЬрдм SelectionMode Multiple ? рдРрд╕реЗ 5 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ:

  1. рдЪрдпрди рдХреЗ рдХреНрд░рдо рд╕реЗ рдЕрдВрддрд┐рдо рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдоред
  2. рд╕реНрд░реЛрдд рдХреЗ рдХреНрд░рдо рд╕реЗ рдЕрдВрддрд┐рдо рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдоред
  3. рдЪрдпрди рдХреЗ рдХреНрд░рдо рд╕реЗ рдЕрдВрддрд┐рдо рдЪрдпрдирд┐рдд/рдЕрдЪрдпрдирд┐рдд рдЖрдЗрдЯрдоред
  4. рд╕реНрд░реЛрдд рдХреЗ рдХреНрд░рдо рд╕реЗ рдЕрдВрддрд┐рдо рдЪрдпрдирд┐рдд/рдЕрдЪрдпрдирд┐рдд рдЖрдЗрдЯрдоред
  5. рд╢реВрдиреНрдп



    (2), (3) рдФрд░ (4) рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИрдВред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ред (1) рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд▓рдЧрддрд╛ рд╣реИред (5) рдпрджрд┐ рдЖрдк SelectedItem рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ SelectionMode Multiple ред

@AmrAlSayed0

SelectMode рдХреЗ рдПрдХрд╛рдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ SelectedItem рдХрд╛ рдорд╛рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдЕрднреА рдЬрд╡рд╛рдм рд╣реИ " SelectionMode рд╕реЗ Multiple рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рдХреБрдЫ рднреА рдерд╛ "ред

@ рд░реЛрдЧреА

рдореИрдВ рдПрдХ рдЪрдпрди рд╕реЗ рдмрд╣реБ-рдЪрдпрди рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реЛрдЧрд╛

рдХреНрдпрд╛ рдЖрдк рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЪрдпрди рдкрд░рд┐рджреГрд╢реНрдп рд╕рдорд░реНрдерд┐рдд рд╣реИ? AFAIK, рд╕рднреА рдореВрд▓ рдирд┐рдпрдВрддреНрд░рдг рдЬрд┐рдирдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ _ should_ CollectionView рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЪрдпрди рдореЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╢реИрд▓реА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА, рдпрджрд┐ рдЪрдпрди рдореЛрдб = рдХреЛрдИ рдирд╣реАрдВ, рдкрд╛рд░рджрд░реНрд╢реА рдЗрддреНрдпрд╛рджрд┐, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд░реИрдбрд▓рд┐рд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреГрд╢реНрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА, рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрдпрди рдореЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реИрд▓реА рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧреАред

@andreinitescu

https://github.com/xamarin/Xamarin.Forms/issues/3172#issuecomment -401015625 (рдФрд░ рдХрд╣реАрдВ рдФрд░) рд╕реЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм:

рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдЪреНрдЫреЗ рдмрд┐рдВрджреБ рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдЕрднреА рд╕рднреА рдЙрддреНрддрд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХреЗрдВ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ; рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рдХреНрд▓рд╛рд╕ рдмреНрд░реЗрдХрдбрд╛рдЙрди рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдЙрд╕ рд╕реНрдерд╛рди рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк (рдФрд░ рдХрдИ рдЕрдиреНрдп) рдЙрди рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕реНрдЯреИрдХрд▓рд╛рдЙрдЯреНрд╕ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреЗрдб рдЖрдЗрдЯрдореНрд╕ (рдпрд╛рдиреА, "рдмрд╛рдЗрдВрдбреЗрдмрд▓ рд░реАрдкреАрдЯрд░") рдХреЗ рдЧреНрд░рд┐рдб рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЙрди рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред

@alexhardwicke

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ, рдХреГрдкрдпрд╛ рдРрд╕реЗ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝реЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХреЗрдВред

рд░реЗрдВрдбрд░рд░реНрд╕ рдореЗрдВ UpdateX рддрд░реАрдХреЗ protected virtual ред :)

рдкреВрд░реА рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрддреАрдд рдореЗрдВ рдПрдХ рджрд░реНрдж рдмрд┐рдВрджреБ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ CollectionView рд▓рд┐рдЦрддреЗ рд╕рдордп рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦ рд░рд╣реЗ рд╣реИрдВред

  1. рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдкрд░, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдЗрд╕ рджреГрд╢реНрдп рдХреЗ рд╡рд░реНрдЧ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
    Windows XAML рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╕рдореВрд╣ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИ, рджреЗрдЦреЗрдВ https://msdn.microsoft.com/en-us/library/system.windows.data.collectionview (v=vs. 110).aspx
    рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЬрд╝рд╛рдорд░реАрди рдлреЙрд░реНрдо рдХреЛ рдПрдХ рд╣реА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ рдпрджрд┐ рдЗрд╕рдХрд╛ рдПрдХ рд╣реА рдирд╛рдо (рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп) рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдПрдХреНрд╕рдПрдПрдордПрд▓ рдорд╛рдирдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ (рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдпреЛрдЬрдирд╛рдмрджреНрдз рд╣реИ?)

    рдЬрд┐рддрдирд╛ рдмрджрд╕реВрд░рдд рдФрд░ рдордЬрд╛рдХрд┐рдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, ListView2 рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ :) рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .NET рдореЗрдВ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЕрднреНрдпрд╛рд╕ рд╣реИ рдЬрдм рдореМрдЬреВрджрд╛ рдирд╛рдо рд╣реА рдПрдХрдорд╛рддреНрд░ рдирд╛рдо рд╣реИ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ:

    рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рддреНрдпрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдПрдкреАрдЖрдИ рдХрд╛ рдореМрдЬреВрджрд╛ рдирд╛рдо рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рдирд╛рдо рд╣реИ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдпрд╛рдиреА, рдпрджрд┐ рдпрд╣ рдПрдХ рдЙрджреНрдпреЛрдЧ рдорд╛рдирдХ рд╣реИ) рдФрд░ рдпрджрд┐ рдХреЛрдИ рд╕рд╛рд░реНрдердХ рдкреНрд░рддреНрдпрдп рдЬреЛрдбрд╝рдирд╛ (рдпрд╛ рдмрджрд▓рдирд╛ рдирд╛рдо) рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

    _рдлреНрд░реЗрдорд╡рд░реНрдХ рдбрд┐рдЬрд╛рдЗрди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢: рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп .NET рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдореНрдореЗрд▓рди, рдореБрд╣рд╛рд╡рд░реЗ рдФрд░ рдкреИрдЯрд░реНрди, рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг_
    https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/general-naming-conventions

    рдмрд╛рдж рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░, рд╣рд░ рдХреЛрдИ рдирдП, рдЪрдордХрджрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╕реНрдерд┐рд░ рдФрд░ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА ListView2 :)ред рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ, ListView2 рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ ListView рдХрд░рдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди, рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ (рдФрд░ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп) рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реЛрдЧрд╛ред

  2. Xamarin рдкреНрд░рдкрддреНрд░реЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ ItemsView рд╣реИрдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдПрдПрдордПрд▓ рдореЗрдВ рдЖрдЗрдЯрдореНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рджрд┐рдЦрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдирд╣реАрдВ рд╣реИред
    рдПрдХ рдирдпрд╛ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпрд╛ рдореМрдЬреВрджрд╛ ItemsView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?рдирдИ рд╕реВрдЪреА рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рднреА?

  3. рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЪреБрдиреМрддреА рд╣реИ, рдореВрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЬреЛ рдПрдХ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА "рдмрд╛рдЗрдВрдбреЗрдмрд▓ рд░реАрдкреАрдЯрд░" рдЬреИрд╕рд╛ рдХреБрдЫ рд░рдЦрдиреЗ рдХреА рд▓рдЪреАрд▓рд╛рдкрди рд╣реИ рдЬреЛ рдПрдХ рд╕рд░рд▓, рд╣рд▓реНрдХрд╛, рдЧреИрд░-рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдЧреИрд░-рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рд╡рд╕реНрддреБрдУрдВ рдХреА -рдЪрдпрди рдпреЛрдЧреНрдп рд╕реВрдЪреАред
    рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдКрдиреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:

рдПрдХ рдирдпрд╛ рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпрд╛ рдореМрдЬреВрджрд╛ рдЖрдЗрдЯрдореНрд╕ рд╡реНрдпреВ рдХреЛ рдирдИ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

ItemsView<T> , рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ TemplatedItemsList рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рдХреНрд░реЙрдлреНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕ рдирдП рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдмрд╛рдж рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░, рд╣рд░ рдХреЛрдИ рдирдП, рдЪрдордХрджрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╕реНрдерд┐рд░ рдФрд░ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА ListView2 :)ред рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ, ListView2 рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ ListView рдХрд░рдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди, рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ (рдФрд░ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп) рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реЛрдЧрд╛ред

рдЖрдкрдХрд╛ рдЖрд╢рд╛рд╡рд╛рдж рдЖрдХрд░реНрд╖рдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ ListView(1) рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ ListView2 рдирд╛рдо рдмрджрд▓рдиреЗ рдЬреИрд╕реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдПрдЧреАред

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдПрдПрдордПрд▓ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ, рдЬреЛ рднреА рдирд╛рдо рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдирдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдЕрдкрдиреЗ рд╡рд╛рджреЗ рдкрд░ рдЦрд░рд╛ рдЙрддрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдКрдиреЛ рдврд╛рдВрдЪрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдЬрд╝рд╛рдорд░реАрди рдлреЙрд░реНрдо рдореЗрдВ рдХреНрдпрд╛ рд▓рд╛ рд░рд╣реЗ рд╣реИрдВред

@gmwilhelm

https://github.com/xamarin/Xamarin.Forms/issues/3172#issuecomment -400925994

рдЕрдЪреНрдЫреА рдмрд╛рддред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИред рдореИрдВ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХрд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЗрдирдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдЙрдЪрд┐рдд рдФрд░ рдордирднрд╛рд╡рди рд╕рдордорд┐рдд рджреЛрдиреЛрдВ рд╣реИред

GroupItemsBinding рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдмрдЬрд╛рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд▓реА рдЧрдИ рд╣реИ, ListView рдХреА рддрд░рд╣ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдореМрдЬреВрджрд╛ рд╕реВрдЪреА рджреГрд╢реНрдп рд╕реАрдорд╛ рдиреЗ рдореБрдЭреЗ рдХрдИ рдЕрд╡рд╕рд░реЛрдВ рдкрд░ рд╕рдореВрд╣реАрдХреГрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдорд╣рдВрдЧрд╛ рджреЛрд╣рд░рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рд╣реИред GroupItemsBinding рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЗрд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ рдФрд░ рд╕рдореВрд╣реАрдХреГрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рдореИрдкрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реЗрдЧреАред

рдпрд╛рдиреА GroupDisplayBinding рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

```рд╕реА#
рд╡рд░реНрдЧ рд╕рдореВрд╣ // рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдореВрд╣ рдХреЛ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЛрд▓реЗрдХреНрд╢рди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдореВрд╣ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд░реНрд╕реНрдЯрдЗрдирд┐рд╢рд┐рдпрд▓) {рдлрд░реНрд╕реНрдЯрдЗрдирд┐рд╢рд┐рдпрд▓ = рдлрд░реНрд╕реНрдЯрдЗрдирд┐рд╢рд┐рдпрд▓; }

public string FirstInitial { get; private set; }

public ObservableCollection<Person> Persons { get; set; } // We use a property for the group items instead

}

рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдХреНрд░рд┐рдПрдЯ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ ()
{
рд╡рд░ рд╕реВрдЪреА рджреГрд╢реНрдп = рдирдИ рд╕реВрдЪреА рджреГрд╢реНрдп {
GroupItemsBinding = рдирдпрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (nameof(Group.Persons))
//...
};
//...
}

```

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ UICollectionView рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмрд╕ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдЕрднреА рддрдХ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛рдИ

@titonton рдпрд╣ рдореБрджреНрджрд╛ рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣

@ AmrAlSayed0 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ 11 рджрд┐рди рдкрд╣рд▓реЗ "рд╕реНрдкреНрд░рд┐рдВрдЯ 139 рдореЗрдВ рдкреНрд░рдЧрддрд┐ рдкрд░" рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдкрд░ рдХреНрдпрд╛ рдирд┐рд░реНрдгрдп рд╣реИ

@opcodewriter рдореИрдВ рдпрд╣реА рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ред @AmrAlSayed0 рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдХреБрдЫ рдХрдореА рд╣реИ рдЬрд╣рд╛рдБ рд╕рдореБрджрд╛рдп рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

@migueldeicaza @hartez рдирд╛рдордХрд░рдг рдпрд╣ рдХрдард┐рди рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ CollectionView рдирд╛рдо рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ CatalogView ?

1

рдХреИрдЯрд▓реЙрдЧ рдЕрдХреНрд╕рд░ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓рдо рдореЗрдВ рдФрд░ рд╕рдорд╛рди рдлреЛрдВрдЯ, рдЯреЗрдХреНрд╕реНрдЯ, рд▓реЗрдЖрдЙрдЯ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдЖрдЗрдЯрдо рдХреА рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдирдореВрдирд╛:

022

@hartez рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ API рдЕрдм рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ? рдЗрд╕ рдкрд░ рдЕрдм рддрдХ рдХрд┐рддрдирд╛ рдХрд╛рдо рд╣реБрдЖ рд╣реИ? рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред :)

@ adrianknight89 рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╢рд╛рдЦрд╛ рд╣реИред https://github.com/xamarin/Xamarin.Forms/tree/lv2spike

рд╣рдо рдЕрднреА рддрдХ рдЗрд╕рдХреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рдЧрддрд┐ рдФрд░ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдпрд╛рд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди / рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛ред

рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВред рдЪреВрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдбреЗрдореЛ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рджреВрд░ рд╣реИрдВред
рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрдИ рдПрдкреАрдЖрдИ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рдПрдкреАрдЖрдИ рд╕реНрдкреЗрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдпреБрдХреНрддрд┐ рдХреИрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рдкрд╛рдПрдЧреА рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдпрд╣рд╛рдВ рдХреА рдЧрдИ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рд╕реВрддреНрд░ рдкрд░ рдпрд╣рд╛рдВ https://github.com/xamarin/Xamarin.Forms/issues/1718
рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреАрдЖрдИ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреИрд░-рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕реНрдЯреИрдХрд▓рд╛рдЙрдЯ-рдЬреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рдгред

рдХреНрдпрд╛ рдирдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдЯреИрдХрд▓рд╛рдЙрдЯ рдХреА рддрд░рд╣, рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рдмрд┐рдирд╛, рдмрд╛рдзреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ?

рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж

рдмрд╣реБрдд рд╕рд╛рд░реА рдЖрдВрддрд░рд┐рдХ рдЪрд░реНрдЪрд╛ рдФрд░ рдЙрдкрдпреБрдХреНрдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ CollectionView #1718 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд▓реЗрдЖрдЙрдЯ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ _not_ рд╣реИрдВрдбрд▓ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА Xamarin.Forms Layouts рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрдВрдзрди рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

CollectionView рдХрд╛ рдореВрд▓ рд▓рдХреНрд╖реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЖрдзреБрдирд┐рдХ рджреЗрд╢реА рд╕реВрдЪреА/рдЧреНрд░рд┐рдб рдирд┐рдпрдВрддреНрд░рдгреЛрдВ (UICollectionView, RecyclerView, ListView/GridView, рдЖрджрд┐) рдХрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдерд╛ред

рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЛ рд╣рд░ рдХрд┐рд╕реА рдХреА "рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛" рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ-рд╕реНрдЯреЙрдк-рдХрдВрдЯреНрд░реЛрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЖрдХрд░реНрд╖рдХ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрди рд╕рднреА рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд╣рд╛рдВ "рд╡реНрдпрд╡рд╕реНрдерд╛" рдЪрд░рдг рдХреЛ рдлреЙрд░реНрдо рд▓реЗрдЖрдЙрдЯ (рдлреНрд▓реЗрдХреНрд╕рд▓рд╛рдЙрдЯ, рд╕реНрдЯреИрдХрд▓рд╛рдЙрдЯ, рдЖрджрд┐) рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред ) рдФрд░ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдУрд╡рд░рд▓реИрдк рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛрдиреЛрдВ рдкрд░рд┐рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдореМрд▓рд┐рдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЕрдВрддрд░ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдмреЛрд▓реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рд╣рдо рдХреБрдЫ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ ListView3 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝реЗред рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ред

рдЗрд╕рдХрд╛ рдирддреАрдЬрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдлреЙрд░реНрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдореВрд▓ рд╕реВрдЪреА/рдЧреНрд░рд┐рдб рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рд▓реЗрдЖрдЙрдЯ рдЗрдВрдЬрди рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕реЗ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣реЗрдЧрд╛ред рдФрд░ #1718 рдХреЛ рдПрдХ рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдлреЙрд░реНрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдлреЙрд░реНрдо рд▓реЗрдЖрдЙрдЯ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП ItemsSource рдФрд░ ItemTemplate рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдПрдХ рдмрдирд╛рдо рджреЛ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ _why_ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП:

рдпрд╣рд╛рдВ рдЬреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬреИрд╕реЗ CollectionView) рдФрд░ #1718 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмреАрдЪ рдореВрд▓рднреВрдд рдЕрдВрддрд░ _where_ рд▓реЗрдЖрдЙрдЯ рд╣реЛрддрд╛ рд╣реИред

CollectionView рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд▓реЗрдЖрдЙрдЯ рдЗрдВрдЬрди (рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдлрд╝реЙрд░реНрдо рд╕реЗ рдХреБрдЫ рдХрд╕реНрдЯрдо рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░ рд╕реНрдиреИрдкрдкреЙрдЗрдВрдЯреНрд╕ рд▓реЙрдЬрд┐рдХ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ), рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рд▓реЗрдЖрдЙрдЯ рдЗрдВрдЬрди (рдФрд░ рджреЗрд╢реА рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди) рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдмрдирд╛рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ CollectionView рдХреЛ рджреА рдЧрдИ рдХреЛрдИ рднреА рд▓реЗрдЖрдЙрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд░реЗрдВрдбрд░рд░ рдХреЛ рджреА рдЬрд╛рддреА рд╣реИ; рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕реНрдерд╛рдиреАрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (Android рдкрд░ LinearLayoutManager/GridLayoutManager, iOS рдкрд░ UICollectionViewFlowLayout, рдЖрджрд┐)ред DataTemplate рд╕реЗ рдкрд░реЗ, рдкреНрд░рдкрддреНрд░ рдХреЛрдИ рднреА рд▓реЗрдЖрдЙрдЯ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдкреНрд░рдкрддреНрд░ рд▓реЗрдЖрдЙрдЯ (FlexLayout, StackLayout, AbsoluteLayout, рдЖрджрд┐) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдкрддреНрд░ рдкрд░рдд рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдкрддреНрд░ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдмрд╣реБрдд рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдХреЛрдИ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ; рд╕рднреА рдЖрдЗрдЯрдо рд╢реБрд░реВ рд╕реЗ рд╣реА рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдмрдирд╛рдП рдФрд░ рд░рдЦреЗ рдЧрдП рд╣реИрдВред

рдЗрди рджреЛрдиреЛрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рдХрдард┐рди рдкреНрд░рд╢реНрди рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. рд░реЗрдВрдбрд░рд░ рдореИрдкрд┐рдВрдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ? StackLayout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ CollectionView рдореЗрдВ CollectionView рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рд░реЗрдВрдбрд░рд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ RecyclerView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдореИрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рддреЛ RecyclerView рдХреЛ рдЫрд┐рдкрд╛ рджреЗрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░реЗрдВрдбрд░рд░ DefaultRenderer рд╕реЗ рдирд┐рдХрд▓рд╛ рд╣реИ? рдпрджрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрдпреВрдЧреНрд░реБрдк рдкрд░рдд рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ ...

  2. рд╣рдо рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░рддреЗ рд╣реИрдВ? UICollectionView рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕реНрдЯреИрдХрд▓рд╛рдЙрдЯ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдлреЙрд░реНрдо рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдХреНрдпрд╛ рд╣рдо рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкрд░рдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ? рдпрджрд┐ рд▓реЗрдЖрдЙрдЯ UICollectionView рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЛ рдЕрдХреНрд╖рдо/рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ?

  3. рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХрд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВ?

... рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпреЗ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдПрдБ _рд╕рдорд╛рдзрд╛рди рдпреЛрдЧреНрдп_ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рд╕рдорд╛рдзрд╛рди _complexity_ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ #1718 рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, ItemsSource рдФрд░ ItemsTemplate рдХреЛ рдлреЙрд░реНрдо рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдпрд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЗрди рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рдмрдирд╛рдирд╛ рд▓рд╛рдн рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВред рдЪреВрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдбреЗрдореЛ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рджреВрд░ рд╣реИрдВред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрдИ рдПрдкреАрдЖрдИ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рдПрдкреАрдЖрдИ рд╕реНрдкреЗрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╣рдо рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред "рдХрд╛рдлреА рджреВрд░" рд╢рд╛рдпрдж рдПрдХ рдЕрддрд┐рдХрдерди рд╣реИ; рдЕрдм рддрдХ рд╣рдордиреЗ рдХрд▓реНрдкрдирд╛ рдХреЗ рдХреБрдЫ рдЧреИрд░-рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рдВрднрд╡ рд╣реИрдВ рдФрд░ рд╣рдо рдХрд┐рд╕реА рдЕрдВрдзреА рдЧрд▓рд┐рдпреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдордиреЗ рдЕрдм рддрдХ рдЬреЛ рдХреБрдЫ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рд╕рдВрднрд╡рддрдГ рдЬрд╛рд░реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдХрд▓реНрдкрдирд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрднреА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЕрдм рддрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдпреБрдХреНрддрд┐ рдХреИрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рдкрд╛рдПрдЧреА рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдпрд╣рд╛рдВ рдХреА рдЧрдИ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рд╕реВрддреНрд░ рдкрд░ рдпрд╣рд╛рдВ #1718ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреАрдЖрдИ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреИрд░-рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕реНрдЯреИрдХрд▓рд╛рдЙрдЯ-рдЬреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рдгред

рд╕рдЪ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ CollectionView _could_ рдЙрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╡рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЙрд╕ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗ рдЪреБрдХреЗ рд╣реИрдВ; рджреЗрдЦреЗрдВ https://github.com/xamarin/Xamarin.Forms/issues/3172#issuecomment -424413234ред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ UICollectionView рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рд╣реИ (https://github.com/xamarin/Xamarin.Forms/issues/3172#issuecomment-401186893), рдореИрдВ рдЕрдиреНрдп рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

рдХреИрдЯрд▓реЙрдЧ рд╡реНрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдХреИрдЯрд▓реЙрдЧ рдЕрдХреНрд╕рд░ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓рдо рдореЗрдВ рдФрд░ рд╕рдорд╛рди рдлреЛрдВрдЯ, рдЯреЗрдХреНрд╕реНрдЯ, рд▓реЗрдЖрдЙрдЯ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдЖрдЗрдЯрдо рдХреА рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд╛рдо рд╕реЗ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@hartez рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрджрдореА рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ

рдХреНрдпрд╛ рдЕрднреА рднреА рдПрдХ рдХрд╕реНрдЯрдо рд▓реЗрдЖрдЙрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ (рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдорддрд▓рдм рдкреНрд░рддрд┐ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛ)?

рдХреНрдпрд╛ рдЕрднреА рднреА рдПрдХ рдХрд╕реНрдЯрдо рд▓реЗрдЖрдЙрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ (рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдорддрд▓рдм рдкреНрд░рддрд┐ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛ)?

рдмрд┐рд▓реНрдХреБрд▓ред рдЖрдк IItemsLayout рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХрд╛ рдХрд╕реНрдЯрдо рд░реЗрдВрдбрд░рд░ рдЗрд╕реЗ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рдмреВрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рд░реЗрдВрдбрд░рд░ рдХреЛ рдЙрдк-рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдФрд░ рдХрдХреНрд╖рд╛ FlexLayout : IItemsLayout рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд┐рд╕рдореЗрдВ рдлреНрд▓реЗрдХреНрд╕ рд▓реЗрдЖрдЙрдЯ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╢рд╛рдорд┐рд▓ рдерд╛ред рдпрд╣ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ Google рдХреЗ FlexBoxLayoutManager рдкрд░

рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕ рдЪреАрдЬ рдХреЛ рдмрд╣реБрдд, рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдирд╛ рд╣реИред

@ hartez
рдХреНрдпрд╛ https://github.com/xamarin/Xamarin.Forms/issues/3749 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ CollectionView рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ CollectionView рдореЗрдВ рдХреЗрд╡рд▓ ItemTemplate рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ ListView рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред

@ hartez
рдХреНрдпрд╛ #3749 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ CollectionView рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ CollectionView рдореЗрдВ рдХреЗрд╡рд▓ ItemTemplate рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ ListView рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред

@andreinitescu рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ

рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ - рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпреЛрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ CreateContent рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (рджреЛрдиреЛрдВ рдореЗрдВ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдФрд░ рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ)ред

@hartez рдмрд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

// рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЪрдпрдирдХрд░реНрддрд╛ рд╣реИ рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИ
var templateToUse = itemTemplate DataTemplateSelector templateSelector рд╣реИ? рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪрдпрдирдХрд░реНрддрд╛ред рдЪрдпрди рдХрд░реЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ (рдЖрдЗрдЯрдо, рд╢реВрдиреНрдп): рдЖрдЗрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ;

рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ CreateContent рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдЯреВрдЯреЗрдЧрд╛, рдмрд╕ рдЗрд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдирд╛ рджреЗрдВред рд▓реЗрдХрд┐рди рдореИрдВ @andreinitescu рд╕реЗ рд╕рд╣рдордд рдЖрдЗрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рдЖрдЗрдЯрдо

@bmacombe IMHO, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд░реАрдпрддрд╛ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ wpf/SL рд╕реЗ рдЧрдардмрдВрдзрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдпрд╣ рднреНрд░рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ #3544

@andreinitescu рдпрд╣ рднреНрд░рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ :) рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрд▓рдЭрди рдореЗрдВ рдерд╛ рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдореЗрдВ

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдЗрд╡реЗрдВрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ, рдореЗрд░реЗ рдкрд╛рд╕ рд╕реВрдЪреА рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдЭрд╛рд╡ рд╣реИ https://github.com/xamarin/Xamarin.Forms/issues/4323

рдФрд░, рдХреНрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП PInterest рдЬреИрд╕реЗ рдЕрдирд┐рдпрдорд┐рдд рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛:

рдЖрдк рджреЗрдЦрд┐рдП, рд╣рд░ рдЗрдореЗрдЬ рдХреА рдЕрдкрдиреА рдКрдВрдЪрд╛рдИ рд╣реЛрддреА рд╣реИ :-)

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

image

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ, рд╣рдо рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА "рдЖрдЗрдЯрдо рд╡реНрдпреВ" рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВ, рдпрд╣ "рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдЖрднрд╛рд╕ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдИрдУрдПрд╕ "рдпреВрдЖрдИрд╕реАрдУрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ" рдЬрд┐рддрдирд╛ рд╣реА рдкреВрд░реНрдг рд╣реИред

рдирдорд╕реНрддреЗ, рдореИрдВ рдЕрднреА рднреА Xamarin рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди DataTemplateSelector рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ListView рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рдЬрдм рдореИрдВрдиреЗ DataTemplateSelector рдХреЗ рд╕рд╛рде CollectionView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ

рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдкрд╡рд╛рдж:

System.InvalidOperationException: LoadTemplate рдЕрд╢рдХреНрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреНрдпрд╛ DataTemplateSelector рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдИ рдЬреНрдЮрд╛рдд рдмрдЧ рд╣реИ?
рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде DataTemplateSelector рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИ?

@hartez @davidortinau рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ KeepItemsInView рдХреЛ KeepFirstItemInView рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП KeepLastItemInView рдирд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рд╡рд░реНрддрдорд╛рди рдирд╛рдо рдмрд╣реБрд╡рдЪрди рд╣реИ (рдЕрд░реНрдерд╛рдд рдХрдИ рдорджреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ) рдЬрдмрдХрд┐ рд╡рд┐рд╡рд░рдг рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рджреГрд╢реНрдп рд╡рд╕реНрддреБ рдХреЛ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдкреАрдЖрдИ рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рджреВрд╕рд░реА рд░рд╛рдд, рдореИрдВ рдПрдХ ListView рд╕реЗрд▓ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реАрдбрд┐рдпреЛ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рджреГрд╢реНрдпрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдЯреЛрдкреНрд▓реЗ/рд░реЛрдХрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди ItemAppearing рдФрд░ ItemDisappearing рд╕рд╛рде рдпрд╣ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рдерд╛ред CollectionView рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

autoplayvideos demo

рдПрдХ рдФрд░ рдЪреАрдЬ рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реЛрдЧреА рд╡рд╣ рдПрдХ рдЖрд╢реНрд░рд┐рдд, рдиреНрдпреВрдирддрдо рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИ рдЬрдмрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдлрд╝реАрдб рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рд╡рд┐рд▓рд╛рд╕рд┐рддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ YouTube рдкрд░ рджреЗрдЦрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдо рд╡рд░реНрддрдорд╛рди рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рдЬрдмрдХрд┐ рдЖрд╕рдкрд╛рд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд┐рдВрдЧ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ CollectionView btw рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реЛрдЪрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рд╣реИред

youtube1-5abab8210e23d9003787855d

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд░реНрддрдорд╛рди рд░рд╛рдд рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ (4.0.1.43780-рд░рд╛рдд рдХрд╛) рдЦреЗрд▓рд╛, рдЬрд┐рд╕рдиреЗ рд╡рд░реНрддрдорд╛рди рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдирд┐рд░реНрдорд╛рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЧреНрд░рд┐рдб рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд░реЛрд╕реНрдкреЗрд╕рд┐рдВрдЧ/рдХреЙрд▓рдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдпрд╛ рдЧреНрд░рд┐рдбрд╕реНрдкреЗрд╕рд┐рдВрдЧ рдЬреИрд╕реЗ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдорд╛рд░реНрдЬрд┐рди/рдкреИрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдкрдХреЗ рдЖрдЗрдЯрдо рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рди рджреЗрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдФрд░ рдмрд╛рдд рдорд╛рд░реНрдЬрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдпрд╛ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рдпрд╛ рд╢рд╛рдпрдж рдПрдЬрдСрдлрд╕реЗрдЯ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдП рдЧрдП рдЖрдЗрдЯрдореЛрдВ рдХреА рдХрдЯреМрддреА рдХрд░рддрд╛ рд╣реИ:
android-margin-image
рдорд╛рд░реНрдЬрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ "рдбреНрд░реИрдЧ" рдПрдиреАрдореЗрд╢рди рдХреЛ рднреА рдХреНрд░реЙрдк рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
android-margin

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЧреНрд░рд┐рдб рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд░реЛрд╕реНрдкреЗрд╕рд┐рдВрдЧ/рдХреЙрд▓рдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдпрд╛ рдЧреНрд░рд┐рдбрд╕реНрдкреЗрд╕рд┐рдВрдЧ рдЬреИрд╕реЗ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдорд╛рд░реНрдЬрд┐рди/рдкреИрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдкрдХреЗ рдЖрдЗрдЯрдо рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рди рджреЗрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╣рдордд, рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд░рдбрд╛рд░ рдкрд░ рд╣реИ - #4681 рджреЗрдЦреЗрдВред

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ, рд╣рдо рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА "рдЖрдЗрдЯрдо рд╡реНрдпреВ" рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВ, рдпрд╣ "рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдЖрднрд╛рд╕ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдИрдУрдПрд╕ "рдпреВрдЖрдИрд╕реАрдУрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ" рдЬрд┐рддрдирд╛ рд╣реА рдкреВрд░реНрдг рд╣реИред

"рдлреНрд▓реЛрдЯ рд╡реНрдпреВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЖрдЗрдЯрдо рдХреЗ рджрд┐рдЦрдиреЗ/рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛:
View GetView(object item)
рдпрджрд┐ рдЖрдЗрдЯрдо рдХреЛ рдЕрдорд▓ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдПрдХ рд▓рдВрдмрд╡рдд рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдУрдПрд╕ рдмрдирд╛рдо рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

IOS рдкрд░, рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЪреМрдбрд╝рд╛рдИ рдХрд╛ 100% рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрдЧрд╛ред
screenshot 2019-01-15 13 56 01

рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЪреМрдбрд╝рд╛рдИ рд▓реЗрдЧрд╛ред
screenshot 2019-01-15 13 57 59

рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рдЪреМрдбрд╝рд╛рдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдХреНрдпрд╛ рдХреЛрдИ рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ рдЬреЛ рдЧреНрд░рд┐рдб Width="Auto" рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ?

рдореИрдВ рдПрдХ рд▓рдВрдмрд╡рдд рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдУрдПрд╕ рдмрдирд╛рдо рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@shwanton рдХреГрдкрдпрд╛ рдЗрд╕ рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ, рдФрд░ рдореИрдВ рдПрдХ рдирдЬрд╝рд░

@shwanton рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рд╣реА рдореБрджреНрджреЗ рдереЗ рдЬреЛ рд░рд╛рдд рдХреЗ рднреЛрдЬрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдкрд░ рдареАрдХ рд╣реЛ рдЧрдП рдереЗ

@krdmllr рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢реБрдХреНрд░рд┐рдпрд╛ред

рдирдорд╕реНрддреЗред рдХреНрдпрд╛ рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдореЗрдВ рдЖрдЗрдЯрдордЯреИрдкреНрдб рдЗрд╡реЗрдВрдЯ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдХреЗ рдЖрдЗрдЯрдордЯреИрдк рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛? рдореИрдВ рдЗрд╕реЗ рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рд╢реБрдХреНрд░рд┐рдпрд╛ред

@uvirra рдЖрдкрдХреА DataTemplateSelector рдкреВрдЫрддрд╛рдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рдореМрдЬреВрджрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИред #4826 рджреЗрдЦреЗрдВред

@hartez рдХреНрдпрд╛ ListView рд▓рд┐рдП рдореМрдЬреВрдж рддреАрди рдЪреАрдЬреЛрдВ рдХреА рддрд░рд╣ рдПрдХ рдЖрдЗрдЯрдо рд░реАрд╕рд╛рдЗрдХреНрд▓рд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдЖрдкрдиреЗ рдХрдИ рдмрд╛рд░ рдореВрд▓ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ CollectionView рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред рдореИрдВ рдмрд╕ рдЗрд╕ рдкрд░ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдИрдУрдПрд╕ рдкрд░ RefreshView рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред ListView рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкреБрдирд╢реНрдЪрд░реНрдпрд╛ рдХреЗ рд▓рд┐рдП UITableView рдХреА Bounces рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ Android рдкрд░, рддрд╛рдЬрд╝рд╛ рджреГрд╢реНрдп рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╢реАрд░реНрд╖ рдЖрдЗрдЯрдо рдХреЗ рдКрдкрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ)ред

@hartez рдХреНрдпрд╛ ListView рд▓рд┐рдП рдореМрдЬреВрдж рддреАрди рдЪреАрдЬреЛрдВ рдХреА рддрд░рд╣ рдПрдХ рдЖрдЗрдЯрдо рд░реАрд╕рд╛рдЗрдХреНрд▓рд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдЖрдкрдиреЗ рдХрдИ рдмрд╛рд░ рдиреЗрдЯрд┐рд╡ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ CollectionView рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред рдореИрдВ рдмрд╕ рдЗрд╕ рдкрд░ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореМрдЬреВрджрд╛ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд░реАрд╕рд╛рдЗрдХреНрд▓рд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЕрднреА, рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдореЗрд░реА рдЖрд╢рд╛ "рдирд╣реАрдВ" рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП) рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЕрдВрддрддрдГ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪреЗрдВрдЧреЗред

рд╕реНрдХреНрд░реЙрд▓ рдХреА рдЧрдИ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдпреВрдЖрдИ/рдпреВрдПрдХреНрд╕ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд▓рдВрдмрди рд╣реЗрдбрд░, рд╢реЛ/рдЫреБрдкрд╛ рдЖрдЗрдЯрдо (рдмрдЯрди, рд╣реЗрдбрд░, рдлрд┐рд▓реНрдЯрд░, рдИрд╕реАрд╕реА ..) рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдирдП, рдЕрджреНрднреБрдд, рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЖрдзреБрдирд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рджреЛрдиреЛрдВ рдкреБрдирд░реНрдЪрдХреНрд░рдг рдФрд░ UICollectionview рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рд┐рдВрдбреЛрд▓рд╛ (рд╕рдВрдЧреНрд░рд╣рджреГрд╢реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рджрд┐рд╢рд╛, рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдореВрд▓реНрдп рдФрд░ рдбреЗрд▓реНрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: https://github.com/xamarin/Xamarin.Forms/issues/4996

рдЖрдзреБрдирд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдирдпрд╛ рдЕрджреНрднреБрдд рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрдиреЗ рдкрд░ @Evolutionlab рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕рдорд░реНрдерди рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/listview-and-gridview-data-optimization

рдпрджрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ рддреЛ рдореИрдВ VisibleItems рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╡реНрдпреВрдореЛрдбреЗрд▓ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд░ рд╕рдХреВрдВред

рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЛ!

@hartez рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЪрдпрдирд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рджреЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдлреЛрдЯреЛ рдЧреИрд▓рд░реА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ 5 рд╕реЗ рдЕрдзрд┐рдХ рдлреЛрдЯреЛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЬрдм рдереНрд░реЗрд╢реЛрд▓реНрдб рддрдХ рдкрд╣реБрдБрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реЗрд▓ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рддрдм рддрдХ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдЖрдЗрдЯрдо рдХреЛ рдЕрдЪрдпрдирд┐рдд рди рдХрд░реЗрдВред

рдпрд╣ SelectedItems (рдЬрд┐рд╕реЗ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЛ SelectionChanged рдИрд╡реЗрдВрдЯ рдкрд░ CurrentSelection рдЧрд┐рдирддреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ SelectionChanged рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ

рдЖрдЬ рдХрд▓ рдХрд▓реЗрдХреНрд╢рди рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рд╕реЗ рдмрд╣реБрдд рдкреАрдЫреЗ рд╣реИ, рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдореИрдВ рдХреНрдпреЛрдВ рд╣реВрдВред

рдмрд╕ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреВрд░реНрдг UWP рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ?

рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЖрдЗрдЯрдо рдХреЗ рджрд┐рдЦрдиреЗ/рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛:
View GetView(object item)
рдпрджрд┐ рдЖрдЗрдЯрдо рдХреЛ рдЕрдорд▓ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

ItemAppearing рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ

рдореИрдВ CollectionView рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЕрд╕рдорд╛рди рдкрдВрдХреНрддрд┐ рдКрдВрдЪрд╛рдИ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ ItemSizingStrategy рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдХреЗ рд╕рд╛рде рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓рд╛ DataTemplateGallery рдФрд░ рдЬрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ MeasureAllItems рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо (iPhone 6, IOS 12.1.4) рдорд┐рд▓рддреА рд╣реИ:

рджрд╛рдИрдВ рдУрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рдкрд░рд┐рдгрд╛рдо рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:

@hartez рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдпрд╛ рдЕрднреА рднреА рдкреНрд░рдЧрддрд┐ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реА)?

рдХреНрдпрд╛ RemainingItemsThresholdReached рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдпрд╣ 4.0.0.169046-pre5 рдореЗрдВ CollectionView рдирд┐рдпрдВрддреНрд░рдг XAML рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ RemainingItemsThresholdReached 4.0 рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирдореВрдирд╛ рдХреЛрдб рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

@Dresel рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рддреЛ рдХреНрдпрд╛ рдЖрдк рдПрдХ рдирдпрд╛ рдЯрд┐рдХрдЯ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдмреЗрд╣рддрд░ рд╣реИред

@melucas @chandrubk рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ RemainingItemsThresholdReached рдкрд░ рдЕрднреА рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

https://github.com/xamarin/Xamarin.Forms/branches/all

рдореИрдВ рднреА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ (рддрд╛рдЬрд╝рд╛ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде) рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд▓рд╛рдЧреВ рд╣реЛрддреЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ CollectionView рдХреЛ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

4323

рд╣рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ do

рд╕рд╛рджрд░,

4323

рд╣рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ do

рд╕рд╛рджрд░,

рдореИрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдмрдВрдж/рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдШрдЯрдирд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЖрдИрдУрдПрд╕ рдореЗрдВ, UICollectionview рддреЛ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, UIScrollView рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИ scrollViewDidEndDecelerating рд╕реЗ UIScrollViewDelegate

рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо RecyclerView.OnScrollListener рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ рдХрд╕реНрдЯрдо рд░реАрдлрд╝реНрд░реЗрд╢рд┐рдВрдЧ, рд▓рдВрдмрди, рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рддрддреНрд╡реЛрдВ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдФрд░ рдкреЙрд▓рд┐рд╢ рдкрд░рд┐рджреГрд╢реНрдп рдЦреЛрд▓реЗрдЧрд╛ред

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рдПрдиреАрдореЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛, рдЬреИрд╕реЗ рдХрд┐ рд░рд┐рд╕рд╛рдЗрдХрд▓рд░ рд╡реНрдпреВ?

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рдПрдиреАрдореЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛, рдЬреИрд╕реЗ рдХрд┐ рд░рд┐рд╕рд╛рдЗрдХрд▓рд░ рд╡реНрдпреВ?

рдЖрдк рдХрд┐рд╕ рдПрдирд┐рдореЗрд╢рди рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЗрд╕рдХреЗ рд▓рд┐рдП Android рд░реЗрдВрдбрд░рд░ RecyclerView рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ/рдирд┐рдХрд╛рд▓рдиреЗ рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдирд┐рдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ,

рдореИрдВ 4.0.0.304370-pre8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
CarouselView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЙрджрд╛рд╣рд░рдг (рдиреАрдЪреЗ рд▓рд┐рдВрдХ) UWP рдкрд░ рдХреБрдЫ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди CollectionView рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ UWP рдХреЗ рд▓рд┐рдП CarouselView рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

https://devblogs.microsoft.com/xamarin/xamarin-forms-4-0-feature-preview-an-entirely-new-point-of-collectionview/

рдзрдиреНрдпрд╡рд╛рджред

рд╣рд╛рдп @noypi ,

рдЬрдмрдХрд┐ CollectionView рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ UWP рдкрд░ рдХреБрдЫ рд╣рдж рддрдХ "рдХрд╛рдо" рдХрд░ рд╕рдХрддрд╛ рд╣реИ, CollectionView рдФрд░ CarouselView рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Android рдФрд░ iOS рдкрд░ рд╕рдЦреНрддреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рдлреАрдбрдмреИрдХ рдПрдХрддреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдкрд░ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореБрдЭреЗ рдкреЙрд▓ рдкрд░ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред [email protected]ред

рдпреБрдХреНрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреНрдпрд╛ TableView рдХреЛ CollectionView рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓: рдЪреВрдВрдХрд┐ рдЕрдм рдХреЛрдИ рд╕реЗрд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХреНрд▓реЛрд░ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ? ListView рдХреЗ рд╕рд╛рде рдХрд╕реНрдЯрдо рд░реЗрдВрдбрд░рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рд╕рдВрднрд╡ рдерд╛ред

рдпреБрдХреНрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреНрдпрд╛ TableView рдХреЛ CollectionView рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдЯреЗрдмрд▓ рд╡реНрдпреВ рдЕрднреА рднреА рдореМрдЬреВрдж рд░рд╣реЗрдЧрд╛ред рд╣рдо рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдПрдВрдЧреЗред

рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓: рдЪреВрдВрдХрд┐ рдЕрдм рдХреЛрдИ рд╕реЗрд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХреНрд▓реЛрд░ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ? ListView рдХреЗ рд╕рд╛рде рдХрд╕реНрдЯрдо рд░реЗрдВрдбрд░рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рд╕рдВрднрд╡ рдерд╛ред

рдЖрдИрдУрдПрд╕ рдкрд░, рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп UICollectionView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдХреЛрд╢рд┐рдХрд╛рдПрдВ UICollectionViewCells рд╣реИрдВред рдФрд░ UICollectionViewCells рдХреЗ рдкрд╛рд╕ рд╕рд╣рд╛рдпрдХ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИрдВ (рдЬреИрд╕реЗ рдкреНрд░рдХрдЯреАрдХрд░рдг рд╕рдВрдХреЗрддрдХ)ред рддреЛ рдкреНрд░рдХрдЯреАрдХрд░рдг рд╕рдВрдХреЗрддрдХ рдпрд╛ рдЪреЗрдХрдорд╛рд░реНрдХ рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА UI рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ ItemTemplate рдореЗрдВ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдЪрдпрди рдХреЛ рдЕрдХреНрд╖рдо рдХреИрд╕реЗ рдХрд░реЗрдВ? рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХрд╛рдзрд┐рдХ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рдЪрдпрди рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@hartez рдЬрдм ItemTemplate рдХреЛ DataTemplateSelector рдкрд░ рд╕реЗрдЯ System.InvalidOperationException: LoadTemplate should not be null

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдВрдЧреЗ

@hartez рдЬрдм ItemTemplate рдХреЛ DataTemplateSelector рдкрд░ рд╕реЗрдЯ System.InvalidOperationException: LoadTemplate should not be null

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдВрдЧреЗ

рдЙрдиреНрд╣реЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рд╢рд╛рдпрдж рдЖрдк рдПрдХ рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ рддрд╛рдХрд┐ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреЗрдВред

@toomasz рдХреЛрдИ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ Nuget рдХреЛ рдирд╡реАрдирддрдо рдкреНрд░реА-рд░рд┐рд▓реАрдЬрд╝ (рдпрд╛ рд░рд╛рддреНрд░рд┐рдХрд╛рд▓реАрди) рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдк рдЬреЛ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рддрдм рдореМрдЬреВрдж рдереА рдЬрдм DataTemplateSelector рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдерд╛ред

@hartez рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдФрд░ рдкрд╛рдж рд▓реЗрдЦ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рддрд╛рдЬрд╝рд╛ рджреГрд╢реНрдп рдкрд░ рдХреЛрдИ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдЕрдЧрд░ рдореИрдВ рд╕рдордп рдЦрд╛рд▓реА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдХрд┐рд╕реА рдПрдХ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рдкреИрд░ рдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдХрджрдо рдирд╣реАрдВ рдЙрдард╛ рд░рд╣рд╛ рд╣реВрдВред

@ adrianknight89 рдпрд╣ 4.0 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд╡рд┐рд╕реНрдордпрдХрд╛рд░реА

@hartez рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдФрд░ рдкрд╛рдж рд▓реЗрдЦ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рддрд╛рдЬрд╝рд╛ рджреГрд╢реНрдп рдкрд░ рдХреЛрдИ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдЕрдЧрд░ рдореИрдВ рд╕рдордп рдЦрд╛рд▓реА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдХрд┐рд╕реА рдПрдХ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рдкреИрд░ рдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдХрджрдо рдирд╣реАрдВ рдЙрдард╛ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕ рд╕рдордп рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдмрд╕ рдПрдХ рдзреНрдпрд╛рди рджреЗрдВ, рдЖрдЬ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдФрд░ рдкрд╛рджрд▓реЗрдЦ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рджреЛ рдирдП рдЧреБрдг рдЬреЛрдбрд╝реЗ рд╣реИрдВ - IsHeaderSticky рдФрд░ IsFooterSticky , рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдпрдерд╛рд╡рдд рд░рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╢реАрд░реНрд╖рд▓реЗрдЦ/рдкрд╛рдж рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЙрдирд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдкрд░ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?

рд╣рд╛рдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрднреА рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рд╕реЗ рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЛрдЬрдирд╛ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХреА рд╣реИред рдЖрдк https://gist.github.com/hartez/7d0edd4182dbc7de65cebc6c67f72e14 рдкрд░ рдлреАрдЪрд░ рдкреНрд░рдЧрддрд┐ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд░реАрдлреНрд░реЗрд╢ рд╡реНрдпреВ рдкрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА?
рдореЗрд░реЗ рдкрд╛рд╕ рдирд╡реАрдирддрдо Xamarin 4 рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ RefreshView рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ

рд░реАрдлреНрд░реЗрд╢ рд╡реНрдпреВ рдкрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА?
рдореЗрд░реЗ рдкрд╛рд╕ рдирд╡реАрдирддрдо Xamarin 4 рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ RefreshView рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ

рддрд╛рдЬрд╝рд╛ рджреГрд╢реНрдп рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдлреАрдЪрд░ рдХреА рдкреНрд░рдЧрддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ

GroupItems рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ?

GroupItemsBinding рдкреНрд░реЙрдкрд░реНрдЯреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╕рдореВрд╣ рдХреЗ рдмрд╛рд▓ рдЖрдЗрдЯрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ? рдЗрд╕рд╕реЗ рд╕рдореВрд╣ рдХреЛ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдмрд╛рд▓ рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдкрддреНрддрд┐ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред

рд▓рд╛рдн:

  • (рдбреА) рдЬреЗрдПрд╕рдУрдПрди рд╕реЗ рд╕рдореВрд╣реАрдХреГрдд рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
    рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рдореВрд╣реЛрдВ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ JSON (рдбреА) рдХреНрд░рдорд╛рдВрдХрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ JSON рд╕рд░рдгрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рди рдХрд┐ рдЧреБрдгреЛрдВ рдХрд╛)ред (рдбреА) рдРрдк рдХреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░, рдпрд╛ рдпрджрд┐ рдЖрдкрдХрд╛ рдРрдк рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ рд╡реНрдпреВрдореЙрдбрд▓ рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рд╡реНрдпреВрдореЙрдбрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпреВрдореЙрдбрд▓реНрд╕ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдПрдХ рджреВрд╕рд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдкрд░ рдПрдХ рдорд╣рдВрдЧрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ + рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХрд░рдирд╛ рд╣реИред
  • рд╕рдореВрд╣ рдорджреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдЬреИрд╕реЗ ViewModelBase )
  • рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рднреА рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдореВрд╣ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕ рд╕рдореВрд╣реАрдХрд░рдг рдЙрджрд╛рд╣рд░рдг рдХреЛ docs.microsoft.com рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ :
```рд╕реА#
рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдкреЗрдЬ рдЯрд╛рдЗрдк рдЧреНрд░реБрдк: рд▓рд┐рд╕реНрдЯ
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢реАрд░реНрд╖рдХ {рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ; рд╕реЗрдЯ; }
// рдЕрдзрд┐рдХ рдЧреБрдг ...
}

like this instead:

```C#
public class PageTypeGroup
{
    public string Title { get; set; }
    // More properties ...

    public List<PageModel> Children { get; set; }
}

рдПрдХреНрд╕рдПрдПрдордПрд▓ рдХреЗ рд╕рд╛рде:

C# <CollectionView GroupItemsBinding = "{Binding Children}" ...> </CollectionView>

GroupItemsBinding рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдЧрд╛, GroupItemsBinding="{Binding .}" рдмрд░рд╛рдмрд░

PS I рдиреЗ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╣рд▓реЗ рдЬреБрд▓рд╛рдИ 2018 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдерд╛ред

23 рдЕрдЧрд╕реНрдд 2019 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдЧреНрд░реБрдкрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░ рджреА рдЧрдИ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛; рд╕рдореВрд╣ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдмрд╣реБрдд рджреЗрд░ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред

рдПрдХрд╛рдзрд┐рдХ рд╕рдореВрд╣ рд╕реНрддрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?
рдкреЗрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдкрдВрджрди рдореЗрдВ рдПрдХреНрд╕рдкреЗрдВрд╢рдирдЯрд╛рдЗрд▓ рд╣реИ ( рдЙрджрд╛рд╣рд░рдг )

рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреАред

рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪреА рдореЗрдВ, рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рд╕рд╛рде, рдЖрдорддреМрд░ рдкрд░ рдбрд┐рдЬрд╝рд╛рдЗрдирд░, рдЙрди рддрддреНрд╡реЛрдВ рдкрд░ "рдЫрд╛рдпрд╛" рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдХреНрд░реАрди рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ (рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ) Xamarin.Forms рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдлреАрдЪрд░ рд╡рд╛рд▓реА рднрддреАрдЬреА рд╣реЛрдЧреА? рдпрд╣ рдПрдХ рдмреВрд▓рд┐рдпрди рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рддрддреНрд╡ рдкрд░ "рдбреНрд░реЙрдк рд╢реИрдбреЛ" рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХреЗрд╡рд▓ X рдкреНрд░рддрд┐рд╢рдд рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рдореИрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд╕реНрддреБ рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдзрд╛рд░рдг рдХрд░реЗрдЧреАред рдпрд╣ ViewPagerIndicator рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЗ рдЖрд╕рд╛рди рдПрдХреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ "рд╡рд░реНрддрдорд╛рди рд╡рд╕реНрддреБ" рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрдиреИрдкрд┐рдВрдЧ рдЪрд╛рд▓реВ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рджреГрд╢реНрдп рдХрд┐рд╕ рдЖрдЗрдЯрдо рдкрд░ рд╕реНрдиреИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддрдбрд╝рдХ-рднрдбрд╝рдХ рдХреЗ рдмрд┐рдирд╛ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛: рд╢рд╛рдпрдж рдпрд╣ рджреГрд╢реНрдп рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдпрд╛ рдордзреНрдп рдмрд┐рдВрджреБ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЖрдЗрдЯрдо рд╣реЛрдЧрд╛ред

рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд╕реНрдХреНрд░реЙрд▓рдЯреЛ () рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╕рд╛рди рджреЛ-рддрд░рдлрд╛ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗ рд╕рдХрддреА рд╣реИред

@hartez рд╣рдо рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рдереЗ рдХрд┐ рдпрд╣ 4.0 рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд╣рдо рд╕реНрдХреНрд░реЙрд▓ рдФрд░ рд░реАрдлреНрд░реЗрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреЗ рд╕реНрдкреНрд░рд┐рдВрдЯреЛрдВ рдХреЗ рд▓реБрдврд╝рдХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдЪрд▓рдХрд░ ListView рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рд╢рд┐рдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЙрдкрд▓рдмреНрдз рд╣реЛред

@hartez рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрдЗрдЯрдо рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде CollectionView рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ:
image
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрдЯрди рд╕реАрдзреЗ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рдиреАрдЪреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╡рд░реНрдЯрд┐рдХрд▓рдСрдкреНрд╢рди рд╕реНрдЯрд╛рд░реНрдЯ рд╣реЛ

рдЬрдм рд╢реЗрд╖ рдЖрдЗрдЯрдо рдереНрд░реЗрд╢реЛрд▓реНрдб рд╕рдВрдкрддреНрддрд┐ рдкрд░реАрдХреНрд╖рдг рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рд╢реНрди рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЖрдЗрдЯрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдкреНрд░рд╡рд╛рд╣ рдЖрдИрдУрдПрд╕ рдореВрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:

рдЖрдИрдУрдПрд╕ рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдЧреИрд▓рд░реА рд╕реЗрд▓ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдФрд░ рдЖрдк рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдЙрдЯ рдСрдл рдж рдмреЙрдХреНрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд┐рддрдиреЗ рд╕реЗрд▓ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЧрддрд┐рд╢реАрд▓ рд╣реИред рдПрдХ рдлреЛрди рдкрд░ рдореИрдВ 4 рдЖрдЗрдЯрдо рдлрд┐рдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЯреИрдмрд▓реЗрдЯ рдкрд░ рдореИрдВ рд╢рд╛рдпрдж 8 рдпрд╛ 9 рдлрд┐рдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдкреНрд░рдкрддреНрд░ рд╕рдВрд╕реНрдХрд░рдг рднреА рдЗрд╕рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛? рдЕрдм рддрдХ рдореИрдВрдиреЗ рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдкрдврд╝рд╛ рд╣реИ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╡рд╣реА рджреЗрдЦрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ GridItemsLayout Span рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗрдЯ рдХреА рд╣реИред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рд╛рд░реНрдб рдХреЛрдбрд┐рдд рдореВрд▓реНрдп рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдЖрдЗрдЯрдо рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░реЛрдВ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рд╛рд░реНрдб рдХреЛрдбрд┐рдВрдЧ 2014 рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред :-P

UWP рдореЗрдВ рдЪрд╛рд░ рдЪрдпрди рдореЛрдб рд░рд╛рдЬреНрдп рд╣реИрдВ
{
рдХреЛрдИ рдирд╣реАрдВ,
рдПрдХрд▓
рдПрдХрд╛рдзрд┐рдХ,
рд╡рд┐рд╕реНрддрд╛рд░,
}
image

image

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЪрд╛рд░ рд░рд╛рдЬреНрдп рднреА рдЙрдкрдпреЛрдЧреА рд╣реИрдВ
рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ
image

рдХреНрдпрд╛ рд╕рд╛рдзрд╛рд░рдг рдкреИрдбрд┐рдВрдЧ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ? #6605 рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╢рд╛рдпрдж рдПрдХ рдЙрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рд░рд┐рдХреНрдд рд╢реАрд░реНрд╖рд▓реЗрдЦ рдФрд░ рдкрд╛рдж рд▓реЗрдЦ (рдПрдХ рдмрд╛рд░ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реИрдХ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЧреНрд░рд┐рдб рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдЪрд╛рд░реЛрдВ рддрд░рдл рдкреИрдбрд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ред

рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ?

// Any possible API could be helpful
private void OnSelectionChanging(object sender, SelectionChangingEventArgs e)
{
  if (...)
      e.Cancel = true;
 }

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдЪрдпрдирд┐рдд рд╡рд┐рдЬреБрдЕрд▓рд╕реНрдЯреЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред

void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // Deselect the item.
    if (sender is CollectionView cv && e.CurrentSelection...)
    {
        cv.SelectedItem = null;
    }
}

рд▓рдВрдмрд╡рдд рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рд░рдВрдЧ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рд░рдВрдЧ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛!

рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреА рджрд┐рд╢рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд╛рдЗрдЯ рд╕реЗ рд▓реЗрдлреНрдЯ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдХрдВрдЯреЗрдВрдЯ рд╣реА рдирд╣реАрдВ

рдореИрдВ рд╡рд┐рднрд╛рдЬрдХ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ...

"рдпрд╛рдж рд░рдЦрдирд╛" рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдЗрддрдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛, рд╣рд░ рд╕реЗрдХреЗрдВрдб рдпрд╛ рдПрдХреНрд╕ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдЗрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреАред рдпрд╣ рд╣рд░ рджреВрд╕рд░реЗ рдЖрдЗрдЯрдо рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ? рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдореЛрдбреБрд▓реЛ рдСрдкрд░реЗрдЯрд░?

рдордВрдЧрд▓, рдЕрдЧрд╕реНрдд 13, 2019, рдкрд░ 16:53 Legacyorder [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

рдХреНрдпрд╛ рдЗрддрдирд╛ рдЕрджреНрднреБрдд рд╣реЛрдЧрд╛, рд╡рд┐рднрд┐рдиреНрди рдорджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреА
рд╣рд░ рд╕реЗрдХрдВрдб рдпрд╛ X рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯред рдЗрд╕рд╕реЗ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛
рд╣рд░ рджреВрд╕рд░реЗ рдЖрдЗрдЯрдо рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░реЗ рдкреГрд╖реНрдарднреВрдорд┐
рд╕рдВрднрд╛рд╡рдирд╛рдПрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/xamarin/Xamarin.Forms/issues/3172?email_source=notifications&email_token=AC4YCKDFCH3WFENRCLPWEC3QELDE3A5CNFSM4FHJRXPKYY3PNVWWK3TUL52HS4DFVREXG43VMVBJKTGODNMVH
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AC4YCKHXX5YSR7M3S4VU5QLQELDE3ANCNFSM4FHJRXPA
.

рд╕рд░реНрдХреБрд▓рд░ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрдЗрдЯрдо рд▓реЗрдЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ "рдПрдмреНрд╕реЛрд▓реНрдпреВрдЯ рдЗрдЯрдореНрд╕рд▓рд╛рдЙрдЯ" рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ, рдлрд┐рд▓рд╣рд╛рд▓ рдореБрдЭреЗ рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдХреЛрдб рдХреЗ рдкреАрдЫреЗ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, GridItemsLayout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдЗрдЯрдо рдХреЛ рдПрдХрд╛рдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдпрд╛ рд╕реНрддрдВрднреЛрдВ рдкрд░ рдлреИрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП? рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧреАред

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреЛ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рднреА рдмреЗрдирдХрд╛рдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдиреАрдЪреЗ рдкрд╣реБрдВрдЪрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдЗрдЯрдо рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ CollectionView рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреЛ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рднреА рдмреЗрдирдХрд╛рдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдиреАрдЪреЗ рдкрд╣реБрдВрдЪрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдЗрдЯрдо рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ CollectionView рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреА рдордиреНрдирдд рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ! рд╕рдВрд╕реНрдХрд░рдг 4.2 рдЬрд╛рдВрдЪреЗрдВ :)
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/scrolling

рдЖрдкрдХреЛ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреЛ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рднреА рдмреЗрдирдХрд╛рдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдиреАрдЪреЗ рдкрд╣реБрдВрдЪрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдЗрдЯрдо рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ CollectionView рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреА рдордиреНрдирдд рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ! рд╕рдВрд╕реНрдХрд░рдг 4.2 рдЬрд╛рдВрдЪреЗрдВ :)
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/scrolling

рдЖрдкрдХреЛ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдореИрдВ 4.2.0.709249 . рдореЗрдВ рд╣реВрдБ
рдХреНрдпрд╛ рдореЗрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ?
image

image

рдореЗрд░реЗ рдкрд╛рд╕ 4.2.0.709249 рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдХреА рдЧрдИ рдШрдЯрдирд╛ рд╣реИред
рдмрд┐рди/рдУрдмреАрдЬреЗ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NuGet рд╕рдореЗрдХрди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдХреНрдпрд╛ рд╣рдореЗрдВ рдЬрд▓реНрдж рд╣реА Android рдФрд░ iOS рдХреЗ рд▓рд┐рдП 4.2 рдХреЗ рд╕рд╛рде RTL рд╕рдкреЛрд░реНрдЯ рдорд┐рд▓реЗрдЧрд╛?

рдХреНрдпрд╛ рд╣рдореЗрдВ рдЬрд▓реНрдж рд╣реА Android рдФрд░ iOS рдХреЗ рд▓рд┐рдП 4.2 рдХреЗ рд╕рд╛рде RTL рд╕рдкреЛрд░реНрдЯ рдорд┐рд▓реЗрдЧрд╛?

рдХреБрдЫ рд╕рдорд░реНрдерди рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ; FlowDirection рд╕рдорд░реНрдерди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА CollectionView рдЖрдЗрдЯрдореНрд╕ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд╖реИрддрд┐рдЬ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рджрд┐рд╢рд╛ рдЕрднреА рднреА рдЕрдзреВрд░реА рд╣реИред рд╕реНрдХреНрд░реЙрд▓ рджрд┐рд╢рд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдлрд╝реНрд▓реЛрдбрд╛рдпрд░реЗрдХреНрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкрд░ рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ; рдЙрд╕ рдХрд╛рд░реНрдп рдХреЛ 4.3 рдореЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк CollectionView рдХреЗ рд╕рд╛рде FlowDirection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓реЗрдВ рдФрд░ рд╣рдо рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗред

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрд░рдЯреАрдПрд▓ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдХреНрдпреЛрдВрдХрд┐ рдХрд▓реНрдкрдирд╛ рдореЗрдВ, рдЗрд╕реЗ рдкреНрд░рдЧрддрд┐ рдпрд╛ рдкреВрд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЧреБрд░реБ, 5 рд╕рд┐рддрдВрдмрд░ 2019, 2:19 рдкреВрд░реНрд╡рд╛рд╣реНрди рдИрдЬрд╝реА рд╣рд╛рд░реНрдЯ, рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдХреНрдпрд╛ рд╣рдореЗрдВ рдЬрд▓реНрдж рд╣реА Android рдФрд░ iOS рдХреЗ рд▓рд┐рдП 4.2 рдХреЗ рд╕рд╛рде RTL рд╕рдкреЛрд░реНрдЯ рдорд┐рд▓реЗрдЧрд╛?

рдХреБрдЫ рд╕рдорд░реНрдерди рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ; рдлреНрд▓реЛрдбрд╛рдпрд░реЗрдХреНрд╢рди рд╕рдкреЛрд░реНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдЖрдЗрдЯрдо рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдирд╛ред рдЬреЛ рдЕрднреА рднреА рдЕрдзреВрд░рд╛ рд╣реИ рд╡рд╣ рд╣реИ рд╕реНрдХреНрд░реЙрд▓
рдХреНрд╖реИрддрд┐рдЬ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛ред рд╕реНрдХреНрд░реЙрд▓ рджрд┐рд╢рд╛
рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдлреНрд▓реЛрдбрд╛рдпрд░реЗрдХреНрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХреБрдЫ рдХрд╛рдо рд╣реИ
рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкрд░ рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдк рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде FlowDirection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдмрдЧ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ,
рдХреГрдкрдпрд╛ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ рдФрд░ рд╣рдо рдЗрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/xamarin/Xamarin.Forms/issues/3172?email_source=notifications&email_token=ACDWB3GSYAQSADERHWVTJX3QIANMNA5CNFSM4FHJRXPKYY3PNVWWK3TUL52HS4DFWSZG43VMVTA
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ACDWB3HMFCHBRZWD5AJMXH3QIANMNANCNFSM4FHJRXPA
.

рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛: рдХреНрд╖реИрддрд┐рдЬ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдк рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдкрд░ FlowDirection = RightToLeft рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░реЙрд▓ рджрд┐рд╢рд╛ рдЕрднреА рдЖрдИрдУрдПрд╕ рдФрд░ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдкрд░ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдирд╣реАрдВ рд╣реЛрдЧреА (рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ _does_ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдХреБрдЫ LoadingDataTemplate рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд╕реВрдЪреА рджреГрд╢реНрдп/рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рдбреЗрдЯрд╛ рдПрд╕рд┐рдВрдХ рд▓реЛрдб рдХрд░рдирд╛ рдХрднреА-рдХрднреА рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕реВрдЪреАрджреГрд╢реНрдп/рд╕рдВрдЧреНрд░рд╣рджреГрд╢реНрдп рдкреЙрдкреНрдпреБрд▓реЗрдЯ рди рд╣реЛ рдЬрд╛рдПред

рдЬрдм рдмрдбрд╝рд╛ рдбреЗрдЯрд╛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ рдФрд░ рдкреЗрдЬ рдкрд╣рд▓реЗ рд╣реА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реЛ, рддреЛ LoadingDataTemplate рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдПрдХ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм CollectionView рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред ItemsSource рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рддрдХ рдПрдХрд╛рдзрд┐рдХ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рд╕реЗрд▓ рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕реВрдЪреА рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкрд╛рдж рд▓реЗрдЦ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдореЗрдВ 3-5 рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдбреЗрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛ рдФрд░ рдлрд┐рд░ рдЙрди рдЖрдЗрдЯрдореНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЬреЛрдбрд╝реЗрдВ)ред рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ CollectionView рдКрдкрд░ рдПрдХ рдХрдВрдХрд╛рд▓ рджреГрд╢реНрдп рд░рдЦрд╛ рдЬрд╛рдП рдФрд░ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдЫрд┐рдкрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ ListView рд╕рд╛рде рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рд▓реЛрдбрд┐рдВрдЧ рджреГрд╢реНрдп рдореЗрдВ EmptyView рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИрдВ, рддреЛ "рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛" рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП EmptyView рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрджрд▓реЗрдВред

@adrianknight89

рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ CollectionView рдКрдкрд░ рдПрдХ рдХрдВрдХрд╛рд▓ рджреГрд╢реНрдп рд░рдЦрд╛ рдЬрд╛рдП рдФрд░ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдЫрд┐рдкрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ ListView рд╕рд╛рде рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рдЙрд╕реА рд╡рд┐рдзрд┐ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛рдиреА рдКрдкрд░ рдХреБрдЫ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕рдВрдХреЗрддрдХ рдбрд╛рд▓рддрд╛ рд╣реВрдВред ListView рдХреЛ IsVisible = false рдФрд░ ActivityIndicator IsVisible = true рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рд▓рд┐рд╕реНрдЯрд╡реНрдпреВ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рджреЛрдиреЛрдВ рдорд╛рдиреЛрдВ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░ рджреЗрдВред

@adrianknight89

рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рдЦрд╛рд▓реА рджреГрд╢реНрдп рдХреЛ рд▓реЛрдбрд┐рдВрдЧ рджреГрд╢реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИрдВ, рддреЛ "рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛" рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрджрд▓реЗрдВред

рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ LoadingDataTemplate рдФрд░ EmptyView рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдкрд░ рдЕрд▓рдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рддрд░ рд╕рд░рд▓ рд╣реЛрдЧрд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рд╕рд╛рджрдЧреА рдХреЗ рдкрд╣рд▓реВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ EmptyView рдХреЛ BackgroundView рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: BackgroundView рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЪреАрдЬ рд╣реИред)

@LeoJHarris рдореИрдВрдиреЗ BackgroundView рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП #7447 рдЬреЛрдбрд╝рд╛ред рд╣рдо рдЙрдкрд░реЛрдХреНрдд рджреЛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП EmptyView рдФрд░ BackgroundView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА 100% рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП EmptyView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдкрд░рд┐рджреГрд╢реНрдп рдЖрдк рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдХреНрд░реАрди рдХреЗ рд░реВрдк рдореЗрдВ BackgroundView рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

@ adrianknight89 рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрдЧреНрд░рд╣

рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд╢реЗрд╖ рдЖрдЗрдЯрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬрд╝реА рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╣рдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

  1. рдРрдк рдлрд╝реНрд░реАрдЬ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдмрд▓рдкреВрд░реНрд╡рдХ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП
  2. CollectionView рдореЗрдВ рдЖрдЗрдЯрдо рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдКрдкрд░ рд╕реНрдЯреИрдХ рдХрд░рддреЗ рд╣реИрдВ ( рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ)

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИ?

@ рдмреНрд░реЛрдВрд╕рди15 рдЖрдк RemainingItemsThresholdReached рдЗрд╡реЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рддреНрд╡рд░рд┐рдд рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рддреЛ рдЖрдкрдХреЛ рдИрд╡реЗрдВрдЯ рдХреЙрд▓ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЕрдиреНрдпрдерд╛ рд╡реЗ рдвреЗрд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рд╕рд╛рде рд╣реА, рдЕрдкрдиреЗ UI рдХреЛ рдореБрдЦреНрдп рдереНрд░реЗрдб рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдЖрдк рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред

@ рдмреНрд░реЛрдВрд╕рди15 рджреЛрдиреЛрдВ рдореБрджреНрджреЗред
ObservableRangeCollection рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ #2 рдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ред
рдЕрднреА рднреА рдлреНрд░реАрдЬ/рд░рд┐рдХреНрдд рд╕реВрдЪреА рдкрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЪрд▓рддреЗ рд╕рдордп рдореБрдЭреЗ рд╕реАрдкреАрдпреВ рд╕реНрдкрд╛рдЗрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдПрдХ рдЕрдирдВрдд рд▓реВрдк рд▓рдЧрддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ рдкрд░ рдмреНрд░реЗрдХ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рдп рдЯреАрдо,
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореИрдВрдиреЗ RemainingItemsThreshold рдФрд░ RemainingItemsThresholdReachedCommand рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ RemainingItemsThresholdReachedCommand рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕реЗ рджреЛ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд▓реА рдмрд╛рд░ 4 рдмрд╛рд░ рдЖрджрд┐) рднрд▓реЗ рд╣реА рдореИрдВ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рди рдХрд░реВрдВред рдореИрдВ рдЗрд╕реЗ рддрд╛рдЬрд╛ Xamarin рдкреНрд░рдкрддреНрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (v.4.2.0.778463) рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реВрдВред
рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрдВрдд рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣рд╛рдБ рд╕рд░рд▓ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдПрдХреНрд╕рдПрдПрдордПрд▓:

<CollectionView
        x:Name="StackLayout"
        ItemsSource="{Binding LatestStories}"
        RemainingItemsThreshold="10"
        RemainingItemsThresholdReachedCommand="{Binding RemainingStoriesCommand}">
        <CollectionView.ItemTemplate>
            <DataTemplate>
            <Grid
                                ColumnSpacing="16"
                                HeightRequest="110"
                                RowSpacing="0">

                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*">
                        </ColumnDefinition>
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>

                    <!--  Blog title  -->
                    <Label
                                    Grid.Column="1"
                                    Margin="0,8"
                                    FontSize="14"
                                    LineBreakMode="TailTruncation"
                                    LineHeight="{OnPlatform Default=-1,
                                                            Android=1.25,
                                                            iOS=1.25}"
                                    MaxLines="2"
                                    Text="{Binding Title}" />

                    <!--  Author name  -->
                    <Label
                                    Grid.Row="1"
                                    Grid.Column="1"
                                    Margin="0,8,0,0"
                                    FontSize="12"
                                    LineHeight="{OnPlatform Default=-1,
                                                            Android=1.5}"
                                    Text="{Binding Author}" />

                </Grid>
            </DataTemplate>
        </CollectionView.ItemTemplate>
</CollectionView>

рдореЙрдбрд▓ рджреЗрдЦреЗрдВ:

public class ArticleListViewModel
    {
        public ObservableRangeCollection<FeedItem> LatestStories { get; } = new ObservableRangeCollection<FeedItem>();
        public Command RemainingStoriesCommand => new Command(() => RemainingStories());

        public ArticleListViewModel()
        {
            RemainingStories();
        }

        private async void RemainingStories()
        {
            var feeds = await GetRemoteFeedsAsync();
            try
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    LatestStories.AddRange(feeds);
                });

            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex, "");
            }
        }

        private async Task<List<FeedItem>> GetRemoteFeedsAsync()
        {
            try
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                var allItems = new List<FeedItem>();
                HttpResponseMessage response;
                var httpClient = new HttpClient();
                response = await httpClient.GetAsync("https://jsonplaceholder.typicode.com/photos").ConfigureAwait(false);
                if (response.IsSuccessStatusCode)
                {
                    var data = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
                    var testData = JsonConvert.DeserializeObject<List<TestJson>>(data);
                    if (LatestStories.Count == 0)
                    {
                        testData = testData.Take(20).ToList();
                    }
                    else
                    {
                        testData = testData.Skip(LatestStories.Count).Take(20).ToList();
                    }

                    foreach (var item in testData)
                    {
                        var newItem = new FeedItem
                        {
                            Title = item.id.ToString(),
                            Description = item.title,
                            ImagePath = item.thumbnailUrl,
                            Link = item.url,
                            PublishDate = "2019-09-11",
                            Category = ""
                        };
                        allItems.Add(newItem);
                    }
                }
                watch.Stop();
                Debug.WriteLine("TPL Total Time: " + watch.ElapsedMilliseconds);
                return allItems;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex, "");
                throw;
            }

        }
    }

@ Bronson15 @andreabalducci @techduggu рдЪреВрдВрдХрд┐ RemainingItemsThresholdReachedCommand рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рд╣рдо UI рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, https://github.com/xamarin/Xamarin.Forms/pull/7516/files#diff -2be3eff4d53f761cd581cca1d2ec3bc0R48

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рдЖрдкрдХреЗ рдЖрджреЗрд╢ рдХреЛ рд╕рдХреНрд╖рдо/рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд░рд┐рдореЛрдЯ рдлрд╝реЗрдЪрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдИрд╡реЗрдВрдЯ рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм/рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдПрдХ рд╕реЗрдорд╛рдлреЛрд░ рдиреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХрднреА-рдХрднреА рдЬрдм рдЖрдк рдХреЙрд▓рдмреИрдХ рдХреЛ рд╕рдХреНрд╖рдо/рдЕрдХреНрд╖рдо рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд/рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрдИ рдЖрдордВрддреНрд░рдг рдирд┐рдХрд╛рд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

@hartez @samhouts @davidortinau рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд╣реБрдд рдмрд╛рд░ рд╕рд╛рдордиреЗ рдЖрдПрдЧрд╛ред рдХреНрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рд╕реБрдЭрд╛рд╡ рд╢реЗрд╖ рдорджреЛрдВ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рдбреЙрдХреНрд╕ рдЯреАрдо рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рджреВрд░рд╕реНрде рдлрд╝реАрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдбрд┐рдВрдЧ рдкреИрдЯрд░реНрди рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рдорджрдж рдорд╛рдВрдЧрддреЗ рди рд░рд╣реЗрдВред

@techduggu рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ (рдорд╛рдореВрд▓реА) рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рд╡рд╛рдКрдВрдЧрд╛ред рдЕрднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред

@adrianknight89 "рдЖрдкрдХреЗ рд╕реНрдХреНрд░реЙрд▓ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░рдг" рд╢рдмреНрдж рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рдЦреБрдЬрд▓реА рд╢реБрд░реВ рдХрд░ рджреАред RecyclerView рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдмрд╛рдж, рд╣рд╛рдБ, рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рд╕реНрдХреНрд░реЙрд▓ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдкреИрдЯрд░реНрди рд╣рдорд╛рд░реА рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING рдпрд╛ SCROLL_STATE_SETTLING рд╣реИрдВред
https://developer.android.com/reference/android/support/v7/widget/RecyclerView.OnScrollListener

рдЖрдкрдХрд╛ рдХреЛрдб рдФрд░ рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдЧрд╛рдЗрдб (https://github.com/codepath/android_guides/wiki/Endless-Scrolling-with-AdapterViews-and-RecyclerView) рднреА рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд▓реЙрдХрд┐рдВрдЧ рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирдВрдд рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░реЙрд▓ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗ (рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХрддрд░ рдХрд╕реНрдЯрдо рд░реЗрдВрдбрд░рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред рдЗрд╕рд▓рд┐рдП Xamarin.Forms рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдпрд╣ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред :) рдореЗрд░реЗ рдЬреИрд╕реЗ рд▓реЛрдЧреЛрдВ (рдЕрд░реНрдз рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде) рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рдРрд╕реЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рд░рд╛рдп рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдФрд░ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред :)

рд╕рд╛рде рд╣реА, рд░реЗрдЧ. рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдиреЗ рдЬрд┐рди рдорд╛рдореВрд▓реА рдореБрджреНрджреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ - рд╡реИрд╕реЗ рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдЕрдирдВрдд рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдкреАрдУрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдЖрдкрдиреЗ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╢реВрдиреНрдп рдЬрд╛рдВрдЪ рдЖрджрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рджреЗрдЦрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдЖрдкрдХрд╛ рдЗрдирдкреБрдЯ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рдж!

@ adrianknight89 рдЖрд╣ рд╣рд╛рдБред рд╣рдорд╛рд░рд╛ рд╡реНрдпрд╕реНрдд рдЪреЗрдХ рдЧрд╛рдпрдм рдерд╛ рдФрд░ рдЗрд╕рд╕реЗ рд╕реНрдЯреИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдорджрдж рдорд┐рд▓реАред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рдореИрдВрдиреЗ рд╕реЗрдорд╛рдлреЛрд░ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдЯрдореНрд╕рд╕реЛрд░реНрд╕ рдореЗрдВ рдирдП рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдкрд░ рджреГрд╢реНрдп рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ред рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдХреЙрд▓ рдХреЛ рдПрдХ рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛; рдЖрдЦрд┐рд░рдХрд╛рд░; рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ред

рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЕрднреА рднреА рдПрдХ рдлреНрд░реАрдЬ рд╕рдорд╕реНрдпрд╛ рд╣реИред рджреГрд╢реНрдп рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реНрд░реАрдЬ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рд░реАрд╕реЗрдЯ рдЕрднреА рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддрдиреА рдмрд╛рд░ рдирд╣реАрдВред рдЕрдзрд┐рдХ рдЖрдЗрдЯрдо рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рднреА рдмрд╣реБрдд рддрдбрд╝рдХрд╛ рд╣реБрдЖ рд╣реИред

@techduggu рдореЗрд░реЗ рдкрд╛рд╕ рд╡реАрдПрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдкрдХреЛ RemainingStories() рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд░рд┐рдореЛрдЯ рдХреЙрд▓ рдХреЛ рдХреЛрд╢рд┐рд╢ рдХреЗ рдЕрдВрджрд░ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ HttpClient рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЗрд╕реЗ рдХрднреА рднреА рдирд┐рдкрдЯрд╛рдирд╛ рдирд╣реАрдВ), рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣рд╛рдВ рд░реБрдХреВрдВрдЧрд╛ред :)

@ рдмреНрд░реЛрдВрд╕рди15 рд╕рдВрдЧреНрд░рд╣

@ adrianknight89 рд░рд╛рдд рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЬреНрдпрд╛рджрд╛рддрд░ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ (рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ)ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрднреА рдПрдХ рдЕрдВрддрд╣реАрди рдкрд╛рд╢ рдореЗрдВ рд╣реИред AFAIK рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ?

@ рдмреНрд░реЛрдВрд╕рди15 рдЕрдВрддрд╣реАрди рдкрд╛рд╢ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЖрдИрдУрдПрд╕ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ? рдЬрдм рдЖрдк рдЕрдкрдиреЗ рд░рд┐рдореЛрдЯ рдлреАрдб рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд▓реВрдк рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЕрд░реНрдерд╛рдд RemainingItemsThresholdReachedCommand рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп DB рдХреЙрд▓ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ)ред

рдПрдХ рдмрд╛рд░ рд╡реНрдпреВ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдмрдВрдж рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ Azure Cosmos рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдЯреЛрдХрди рджреЗрддрд╛ рд╣реИред рдЬрдм рдЯреЛрдХрди рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ RemainingItemsThresholdReachedCommand рдЙрд╕ рдЯреЛрдХрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@ adrianknight89 рдЖрд╣ред рджрд┐рд▓рдЪрд╕реНрдкред рдкрд░рд┐рдгрд╛рдо рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдФрд░ рдпрджрд┐ рдпрд╣ 0 рд╣реИ рддреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯ рд░рд╣рд╛ рд╣реИред рдЕрдирдВрдд рд╕реНрдХреНрд░реЙрд▓ рдлрд┐рдХреНрд╕реНрдбред рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдирдпрд╡рд╛рдж!

@ adrianknight89 рдиреЗ iOS рдХреНрд░реИрд╢ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП
рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ 1000 рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╣реИ, рдЖрдИрдУрдПрд╕ рдкрд░ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 5-7 рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдбрд┐рдмрдЧ, iPhone Xs рдФрд░ Redmi Note 7

@andreabalducci рдХреНрдпрд╛ рдЖрдк рдПрдХреНрд╕рдПрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рд╣реИрдВ? рднреМрддрд┐рдХ рдЙрдкрдХрд░рдг рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреИрд╕рд╛ рд╣реИ? рдпрджрд┐ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдкрд╛рджрди рдзреАрдорд╛ рд╣реИ, рддреЛ рдпрд╣ iOS рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдХреА рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╕реЗ, рдПрдХ рд░реЗрдкреЛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@ adrianknight89 @andreabalducci рд╣рд╛рдБ, рдореЗрд░реЗ Xs рдореИрдХреНрд╕ рдкрд░ рдЕрдзрд┐рдХ рдЖрдЗрдЯрдо рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 1-5 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рдЖрдЗрдЯрдо рдХреЛ рдЦрд╛рд▓реА рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

@ adrianknight89 рджреЛрдиреЛрдВ рднреМрддрд┐рдХ рдЙрдкрдХрд░рдг, iOS рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рд╕рдорд╛рди рдореБрджреНрджреЗ рд╣реИрдВред

рд╣рдордиреЗ рдбреЗрдЯрд╛рдореИрдкреНрд▓реЗрдЯреНрд╕ рд╕реЗ рд╕рднреА рд╕реНрдЯреИрдХрд▓реЗрдЖрдЙрдЯ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЖрдИрдУрдПрд╕ рдХреЗ 20 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝реЙрд░реНрдореЗрдЯреЗрдбрд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдХреНрд╖рдо рд╕рдВрдХрд▓рд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рдЧрддрд┐ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХреАред

рдЖрдИрдУрдПрд╕ рдкрд░, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓рд░реЗрдВрдЬ рдХреЛрд▓реЗрдХреНрд╢рди (рдПрдорд╡реАрд╡реАрдПрдо рд╣реЗрд▓реНрдкрд░реНрд╕ рд╕реЗ) рдЬреЛрдбрд╝рддреЗ рд╕рдордп рджреГрд╢реНрдп рдХрд╛рд▓рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╢реЗрд╖ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, GridItemsLayout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдЗрдЯрдо рдХреЛ рдПрдХрд╛рдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдпрд╛ рд╕реНрддрдВрднреЛрдВ рдкрд░ рдлреИрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП? рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧреАред

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА?

@LynoDesu рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ: https://github.com/xamarin/Xamarin.Forms/issues/6357

@LynoDesu рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ: #6357

рдЖрд╣, рдмрдврд╝рд┐рдпрд╛! рдзрдиреНрдпрд╡рд╛рджред рдЕрдЧрд░ рдореИрдВ рдЗрд╕рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╣реЛрдордкреЗрдЬ рд╡рд┐рдХреА рдХреЗ рд╕рд╛рде-рд╕рд╛рде Contributing.md рдкрдврд╝реЗрдВред

@ adrianknight89 рдХреЛ рдмреНрд▓реИрдВрдХ + рдмреИрдХ рдЯреВ рд╕реНрдЯрд╛рд░реНрдЯ рдЗрд╢реНрдпреВ рдорд┐рд▓рд╛, https://github.com/andreabalducci/XamarinCollectionView/blob/b186e563ff8391dfb473e62e5a4c4587e8d4e9da/cvrepro/cvrepro/ListViewModel.cs#L46

рдПрдХ рдЦрд╛рд▓реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЕрдЧрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рдЖрдЗрдЯрдо рд╣реЛрддрд╛ рд╣реИред

рдЖрдИрдлреЛрди рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдореИрдВ рдореБрджреНрджрд╛ рджреЗрдЦрддрд╛ рд╣реВрдВред рдпрд╣ рд╢рд╛рдпрдж #7548 рдЬреИрд╕рд╛ рд╣реА рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рд░реЗрдкреНрд░реЛ рд╡рд╣рд╛рдВ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ IsGrouped рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЦрд░рд╛рдм рд╣реЛ рдЧрдпрд╛ рд╣реИред

CollectionView.GroupHeaderTemplate рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдИрдУрдПрд╕ рдкрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Microsoft рд╕рд╛рдЗрдЯ рд╕реЗ рд╕рдореВрд╣реАрдХрд░рдг рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    public class AnimalGroup : List<Animal>
    {
        public string Name { get; private set; }

        public AnimalGroup(string name, List<Animal> animals) : base(animals)
        {
            Name = name;
        }
    }

    public class Animal
    {
        public string Name { get; set; }
        public string Location { get; set; }
        public string Details { get; set; }
        public string ImageUrl { get; set; }
    }

    public List<AnimalGroup> Animals { get; private set; } = new List<AnimalGroup>();

    Animals.Add(new AnimalGroup("Bears", new List<Animal>
        {
            new Animal
            {
                Name = "American Black Bear",
                Location = "North America",
                Details = "Details about the bear go here.",
                ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/0/08/01_Schwarzb├дr.jpg"
            },
            new Animal
            {
                Name = "Asian Black Bear",
                Location = "Asia",
                Details = "Details about the bear go here.",
                ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Ursus_thibetanus_3_%28Wroclaw_zoo%29.JPG/180px-Ursus_thibetanus_3_%28Wroclaw_zoo%29.JPG"
            },
        }));
<CollectionView ItemsSource="{Binding Animals}"
                        IsGrouped="true">
            <CollectionView.GroupHeaderTemplate>
                <DataTemplate>
                    <Label Text="Header"
                           BackgroundColor="LightGray"
                           FontSize="Large"
                           FontAttributes="Bold" />
                </DataTemplate>
            </CollectionView.GroupHeaderTemplate>
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <Grid Padding="10">
                        <Image Grid.RowSpan="2"
                               Source="{Binding ImageUrl}"
                               Aspect="AspectFill"
                               HeightRequest="60"
                               WidthRequest="60" />
                        <Label Grid.Column="1"
                               Text="{Binding Name}"
                               FontAttributes="Bold" />
                        <Label Grid.Row="1"
                               Grid.Column="1"
                               Text="Child"
                               FontAttributes="Italic"
                               VerticalOptions="End" />
                    </Grid>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/grouping

рдЬрд░реВрд░реА

CollectionView рдХреЗ рд╕рд╛рде рд╕рдореВрд╣реАрдХрд░рдг рдбреЗрдЯрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ iOS рдкрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИред

рдУрд╣, рдореБрдЭреЗ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╛рдж рдЖ рдЧрдпрд╛ред рдзрдиреНрдпрд╡рд╛рджред

рд╣рдордореЗрдВ рд╕реЗ рдЬреЛ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рд╕рдореВрд╣реАрдХреГрдд рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЪреАрд▓рд╛ рд╣реИ? рдпрд╛ рд╣рдо ListView рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВ?

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред рдореИрдВ рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рдХрд▓реНрдкрдирд╛ рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ IsHeaderSticky рдФрд░ IsFooterSticky рд▓рд┐рдП рдЧреБрдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЪрд░реНрдЪрд╛ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рднреА рдЙрдирдХрд╛ рдХреЛрдИ рдФрд░ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рд╡реЗ рдЕрднреА рднреА рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реЛрдбрдореИрдк рдкрд░ рд╣реИрдВ?

рд╕рдВрдЧреНрд░рд╣рджреГрд╢реНрдп рдореЗрдВ рд╣рдореЗрдВ ItemAppeared, ITemDisappeared рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

@IosDeveloperHarsh Scrolled рдИрд╡реЗрдВрдЯ рдИрд╡реЗрдВрдЯ args рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдкрд╣рд▓реА рдФрд░ рдЖрдЦрд┐рд░реА рджреГрд╢реНрдпрдорд╛рди рд╡рд╕реНрддреБ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреЗрдЦреЗрдВред

@ rafiwardak2003 рд╕рдВрдЧреНрд░рд╣

@ рдХреИрдмрд▓ 95 рдореИрдВ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдВрддрддрдГ рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рд╢рд╛рдпрдж, рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдХреНрд░рд┐рдп рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ/рдкрд╛рдж рд▓реЗрдЦ рдореЗрдВ рдЪрд┐рдкрдЪрд┐рдкрд╛ рд╕рд╛рдорд╛рди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ SelectionChangedCommandParameter рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

public ICommand => new Command<MySelectedItemModel>((item) => {}

рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

public ICommand => new Command<object>((item) =>{ var selectedItem = item as MySelectedItemModel;}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ SelectionChangedCommandParameter рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

public ICommand => new Command<MySelectedItemModel>((item) => {}

рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

public ICommand => new Command<object>((item) =>{ var selectedItem = item as MySelectedItemModel;}

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрдпрдирд┐рдд рдЗрдЯреИрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ SelectionChangedCommandParameter рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
public ICommand => new Command<MySelectedItemModel>((item) => {}
рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
public ICommand => new Command<object>((item) =>{ var selectedItem = item as MySelectedItemModel;}

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрдпрдирд┐рдд рдЗрдЯреИрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?

рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрд┐рдВрджреБ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╕реНрддрд░ рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪрдпрдирд┐рдд рд╡рд╕реНрддреБ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЖрдк рд╢рд╛рдпрдж рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдк рдЙрд╕ рдИрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдорд┐рд▓реЗрдЧрд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рднреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рднреА рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдирд╣реАрдВ рдлреИрд▓рд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдКрдВрдЪрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЗрдЯрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
рдЕрд░реНрдерд╛рдд
рдЦрд░реАрдж

рдХрдЯреМрддреА

рдХреБрд▓
рдХреБрд▓
рдореБрдиреНрдирд╛

рд▓реЗрдХрд┐рди рдЖрдЗрдЯрдо 1 рдФрд░ 2 (рдПрдХ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп) рдиреЗ рдЕрднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдКрдВрдЪрд╛рдИ рд▓реА рд╣реИ, рднрд▓реЗ рд╣реА рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 3 рдпрд╛ 4 рдЖрдЗрдЯрдо рд╣реЛрдВ рдФрд░ рдХрдЯреМрддреА рдЕрдиреБрднрд╛рдЧ рджреЗрдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдиреАрдЪреЗ рдПрдХ BIIIIIIIIIIIIIIIIIIG рдЕрдВрддрд░ рд╣реЛ

рдореИрдВрдиреЗ рд╕реНрдЯреИрдХрд▓реЗрдЖрдЙрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЖрдЗрдЯрдо рдЪрдпрди рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛

рдореИрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рднреА рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдирд╣реАрдВ рдлреИрд▓рд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдКрдВрдЪрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЗрдЯрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕реНрдЯреИрдХрд▓реЗрдЖрдЙрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЖрдЗрдЯрдо рдЪрдпрди рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдмрд╛рдЗрдВрдбреЗрдмрд▓ рд▓реЗрдЖрдЙрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рднреА рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдирд╣реАрдВ рдлреИрд▓рд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдКрдВрдЪрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЗрдЯрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕реНрдЯреИрдХрд▓реЗрдЖрдЙрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЖрдЗрдЯрдо рдЪрдпрди рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдмрд╛рдЗрдВрдбреЗрдмрд▓ рд▓реЗрдЖрдЙрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЕрд░реЗ! рдареАрдХ рд╡рд╣реА рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдПред рдЬрдм рд╕реЗ BindableLayouts рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдерд╛?

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж! рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдпрд╛ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдирдП рдореБрджреНрджреЗ рдЦреЛрд▓реЗрдВред рдЕрдм рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

fazil1987 picture fazil1987  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xabre picture xabre  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mfeingol picture mfeingol  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

deakjahn picture deakjahn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rmarinho picture rmarinho  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ