2016-04-11 27 views
2

Görüntüyü bir GridView adım adım art arda görüntülemek için bir gereksinimimiz var. Bu nedenle GridView, IsSelected öğesinin seçili öğelerini bulmak için CLR object (GridView's ItemSource türünün özelliği) karşılık gelen ciltleme nesneleri özelliği ile bağlanmıştır. UWP, RelativeSouce ve düzenleyici bağlayıcısını desteklemediğinden, internette bir arama yaptıktan sonra aşağıdaki kodu bulduk.GridViewItem IsSWected Uygulamasında Bağlama UWP Uygulaması

Ancak yukarıdaki yaklaşımla ilgili bir kusur var gibi görünüyor. Bir sonraki fotoğraf kümesini yüklemek için sayfa aşağı kaydırıldığında, seçilen önceki öğeler seçimini kaybeder.

Bu sorunu daha önce hiç kimse ya da yukarıdaki sorunu çözmek için herhangi bir öneride bulunmuş mu? Model sınıfına IsSelected ürününü taşıyın ve bir kullanıcı denetimine bağlayın.

cevap

0

Kullanıcı denetimi aslında hücredir ve veri şablonunuza eklenir.

<GridView.ItemTemplate> 
    <DataTemplate> 
     <controls:MyCustomControl IsSelected="{Binding IsSelected}"/> 
    </DataTemplate> 
</GridView.ItemTemplate> 

MyCustomControl olarak, öğenin seçili durumunu göstermek için fark görsel devlet idare edecek. Bu şekilde ViewModel'iniz, listenizden seçilen öğenin listesini almanız gerektiğinde listeyi "bilmek" zorunda kalmaz.

+1

Ancak GridViewItem.IsSelectedProperty, sayfada herhangi bir kullanıcı seçili öğe için arka planda IsSelected ayarlamak için nasıl bağlanır? – user1672994

+0

, Öğe'ye dokununca modeli alın, IsSelected özelliğini alın, doğru olarak ayarlayın. "GridViewItem.IsSelectedProperty" hakkında unutun, benim örneğimde görmezden gelerek yapacak bir şeyim yok. – thang2410199

+0

Herkes? Bu, bildiğim neredeyse her uygulama için hayati önem taşıyor ve bunu yapmanın güvenilir bir yolu yok. – SuperJMN